我用Google搜索并查看了示例,但无法找到能明确解释其工作原理的示例。
所以我正在看这个例子。
以下是以下关系
以下列出了所有学生都注册的课程。
Select
code, title
From
course c
Where
not exists (Select ssn from student s
where not exists (select ssn from registered r
where c.code = r.code and s.ssn = r.ssn ));
那么这个例子实际上是如何工作的?我们是从外部还是内部开始的?我真的很困惑不存在的部分如何运作。我的意思是我明白如果返回一个空集,它返回true,如果返回一个值,则返回false。但我只需要有人为我彻底解释一个例子。 (例如这个)。
非常感谢!
答案 0 :(得分:0)
基本上,从内到外的执行开始是一个子查询
Select code, title From course c Where not exists (
Select ssn from student s where not exists (
select ssn from registered r where c.code = r.code and s.ssn =r.ssn ));
根据您的查询说明,如果在学生表中记录并且学生记录不在注册表中,则返回课程表中的标题和代码
希望你明白