gzrjzcx 2017-12-07 15:06 采纳率: 0%
浏览 14158

关于sql查询中where子句嵌套select的问题

如题,
我在联系sql时,想做一个查询 学过001课程同时也学过002课程的同学的学号和姓名
的查询时,发现一个问题不理解:

select *
from student s
where (select count(*) from sc where  cno = 'c01')>0

这样查询出来的结果是
图片说明
这是不符合我的想法的,按理来说应该先是内部的select返回的结果应该是3呀,为什么全部输出了?

select *
from student s
where (select count(*) from sc where s.sno= sc.sno and cno = 'c01')>0
这样查询出来的结果却是我想要的结果,
图片说明
很奇怪为什么需要在where中添加连接表的操作呢?而且这个连接表的操作中为什么from里面不需要from student表,只from sc表就可以操作了?
正常情况下如果连接表应该是
select*
from student,sc
where student.sno = sc.sno
呀 为什么此处不需要from student?
我都不确定这样操作出来什么

求大神帮忙解答解答。

我的student表和sc表如下:
student
sc

  • 写回答

6条回答 默认 最新

  • devmiao 2017-12-07 15:56
    关注
    评论

报告相同问题?