sql笔记 not exists

问题:从S(学号,姓名,年龄,生日)表和SC(学号,课程号,成绩)表中查询出没有选择课程号为1001的课程的所有学生的学号和姓名。

请问这个查询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 子句。

摘抄与论坛,链接:http://bbs.csdn.net/topics/330176966

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值