NOT EXISTS 在 SQL 中究竟是如何工作的?
How exactly does NOT EXISTS work in SQL?
我用谷歌搜索并查看了示例,但找不到可以明确解释其工作原理的示例。
所以我在看这个例子。
这里有如下关系
- 学生(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 ));
那么这个例子实际上是如何工作的呢?我们是从外部还是内部开始?我真的很困惑不存在的部分是如何工作的。我的意思是我理解 returns 如果返回一个空集则为真,如果返回一个值则为假。但我只需要有人为我彻底解释一个例子。 (比如这个)。
非常感谢!
基本上从内到外执行都是子查询
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 ));
根据您的查询,它解释说 return 我是课程 table 的标题和代码,如果学生 table 中有记录,而注册 [=18] 中没有学生记录=]
希望你明白
我用谷歌搜索并查看了示例,但找不到可以明确解释其工作原理的示例。
所以我在看这个例子。
这里有如下关系
- 学生(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 ));
那么这个例子实际上是如何工作的呢?我们是从外部还是内部开始?我真的很困惑不存在的部分是如何工作的。我的意思是我理解 returns 如果返回一个空集则为真,如果返回一个值则为假。但我只需要有人为我彻底解释一个例子。 (比如这个)。
非常感谢!
基本上从内到外执行都是子查询
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 ));
根据您的查询,它解释说 return 我是课程 table 的标题和代码,如果学生 table 中有记录,而注册 [=18] 中没有学生记录=]
希望你明白