SQL查询没有选择某门课的所有学生的姓名学号

从S(学号,姓名,年龄,生日)表和SC(学号,课程号,成绩)表中查询出没有选择课程号为1001的课程的所有学生的学号和姓名。
请问这个查询SQL语句该怎么写?

2个回答

select s.number,s.name
from s where not exists (
select 1 from sc where sc.number=s.number and sc.course<>'1001');

参考自:
EXISTS、IN与JOIN的用法区别 http://www.data.5helpyou.com/article307.html

mylove8671
奔跑啊天行者 测试了下,返回空。前面有not exists 了,<>应该改成=吧,改成=返回正确结果了。
3 年多之前 回复

select s.number,s.name from s join sc on s.number=sc.number where sc.course not in ("1001"); 仅供参考

mylove8671
奔跑啊天行者 不对吧,假如一个学生选修了1001,1002两门,这不就不行了吗
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!