单独查询数据库
单独查询操作系统
两个都查询,明明有一个学生两门课都选了,为什么查询不出来
你这个写法不是画蛇添足么? cname本来就是课程名称,你这段sql就等同于 cname='操作系统' ,同理,下面那段 等同于 cname='数据库' ,第三个sql就变成了
cname='操作系统' and cname='数据库'
等价于
'操作系统'='数据库'
这个条件怎么可能查出数据嘛
要找出同时参与了指定两个课程的人,初学者的思路一般是先分别取得两个课程对应的姓名清单,然后再同时去in这两个姓名清单,但你这又变成了in课程,当然不对。
另外,更加合理的做法应该是,在where 条件 里in这两门课程,然后按姓名group by ,取having count(课程)=2的,这样就不需要重复查询这些表了