问题:从S(学号,姓名,年龄,生日)表和SC(学号,课程号,成绩)表中查询出没有选择课程号为1001的课程的所有学生的学号和姓名。
摘抄与论坛,链接:http://bbs.csdn.net/topics/330176966
请问这个查询SQL语句该怎么写?
论坛求助答案:
SELECT 学号,
姓名
FROM S
WHERE NOT EXISTS (SELECT 1
FROM SC
WHERE SC.课程号 = '1001'
AND S.学号 = SC.学号) ;
我的理解是根据 SC.课程号 = '1001'来筛选,然后根据 S.学号=SC.学号 来判断S表中存在不存在的,就是两个表共有或相似的字段。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
附exists/not exists语法:
EXISTS subquery ;
参数 subquery:是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字)。 结果类型:Boolean 结果值:如果子查询包含行,则返回 TRUE。
NOT EXISTS 的作用与 EXISTS 正相反。如果子查询没有返回行,则满足 NOT EXISTS 中的 WHERE 子句。
3256

被折叠的 条评论
为什么被折叠?



