码迷,mamicode.com
首页 > 其他好文 > 详细

EXISTS/NOT EXISTS实现全称量词的查询(双重否定)

时间:2020-06-22 18:59:43      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:sql   sts   查询   cno   distinct   span   exist   and   条件   

例1:

查询选修了全部课程的学生姓名。
\(\Longrightarrow\) 对与满足条件的学生,应该是:不存在一门课程他没有选而课表中存在。

SELECT Sname
FROM Student
WHERE NOT EXISTS(
      SELECT *
      FROM Course
      WHERE NOT EXISTS(
            SELECT *
            FROM SC
            WHERE Sno=Student.Sno 
            AND Cno=Course.Cno
      )
)

两层的嵌套查询,可以类比于两层的 ‘for‘ 循环,第一层为学生,第二层为课程,循环里面是去判断。

例2:

查询至少选修了学生201215122选修的全部课程的学生的学号。
\(\Longrightarrow\) 不存在这样的课程,学生201215122选修了,而当前学生没有。

SELECT DISTINCT Sno
FROM SC SCX
WHERE NOT EXISTS(
      SELECT *
      FROM SC SCY
      WHERE SCY.Sno=‘201215122‘ 
      AND NOT EXISTS(
            SELECT *
            FROM SC SCZ
            WHERE SCZ.Sno=SCX.Sno
            AND SCZ.Cno=SCY.Cno
      )
)

EXISTS/NOT EXISTS实现全称量词的查询(双重否定)

标签:sql   sts   查询   cno   distinct   span   exist   and   条件   

原文地址:https://www.cnblogs.com/whix/p/13178132.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!