首页 新闻 搜索 专区 学院

sql语句的NOT IN

0
悬赏园豆:5 [已解决问题] 解决于 2019-04-04 11:34

查询没学过“叶平”老师课的同学的学号、姓名:
我的语句:
SELECT DISTINCT s.id, s.no,s.name FROM student s,teacher t,course c,score
WHERE s.id NOT IN
(SELECT score.student_id WHERE score.course_id IN
(SELECT c.id WHERE c.teacher_id IN
(SELECT t.id WHERE t.teacher_name = '叶平')))
为什么没有把学过‘叶平’老师课的给排除掉?

这个没有not的就可以查处来学过‘叶平’老师课程的学生,加了not却没有排除掉这些
SELECT DISTINCT s.id, s.no,s.name FROM student s,teacher t,course c,score
WHERE s.id IN
(SELECT score.student_id WHERE score.course_id IN
(SELECT c.id WHERE c.teacher_id IN
(SELECT t.id WHERE t.teacher_name = '叶平')))
不知道为什么?

Abserver的主页 Abserver | 菜鸟二级 | 园豆:205
提问于:2019-04-04 09:52
< >
分享
最佳答案
0

建议在查询的时候不要省略from,你的where后面里的子查询用的表不是单独的,而是最外层的。你改成这样写试试:
select 列 from 表 where ID not in (select 列 from 表 where ...)
你现在是这样的:
select 列 from 表 where ID not in (select 列 where ...)

收获园豆:5
默卿 | 老鸟四级 |园豆:4686 | 2019-04-04 10:19

多谢,加上from后就解决了

Abserver | 园豆:205 (菜鸟二级) | 2019-04-04 11:36
其他回答(1)
0

这种sql问题,最好把相关表结构发下,不然别人怎么帮忙看呢

coco_xu | 园豆:505 (小虾三级) | 2019-04-04 10:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册