我试图用我的头脑去理解使用NOT EXISTS的师的工作。我知道如何使用非Exist编写SQL查询。但不知何故,我不知道如何对此类查询进行评估。任何解释和帮助将不胜感激。
我的查询是:给出所有课程注册的学生的姓名。
student
表
SID SName
S1 Amy
S2 Tracy
course
表
CID coursename
C1 computer
C2 Biology
enrolled
表。密钥是SID和CID
SID CID
S1 C1
S1 C2
S2 C1
我的SQL查询如下:
SELECT s.SName
FROM student s
WHERE NOT EXISTS
(SELECT CID from course c
WHERE NOT EXISTS
(SELECT S.SID
FROM enrolled E
WHERE S.SID=E.SID AND
C.CID=E.CID));
我的理解是:
对于S1:内部查询将首先获取 - C1并检查S1是否在C1中注册。在我们的例子中。他是。它将返回false - 然后它将检查C2并再次返回false。
是这样吗?我现在很困惑。