NOT EXISTS究竟是如何在SQL中工作的?

时间:2015-02-22 05:55:46

标签: sql exists not-exists

我用Google搜索并查看了示例,但无法找到能明确解释其工作原理的示例。

所以我正在看这个例子。

以下是以下关系

  • 学生(ssn,姓名,地址,专业)
  • 课程(代码,标题)
  • 已注册(ssn,代码)

以下列出了所有学生都注册的课程。

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。但我只需要有人为我彻底解释一个例子。 (例如这个)。

非常感谢!

1 个答案:

答案 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 ));

根据您的查询说明,如果在学生表中记录并且学生记录不在注册表中,则返回课程表中的标题和代码

希望你明白