题解 | #使用含有关键字exists查找未分配具体部门的员工的所有信息。#

使用含有关键字exists查找未分配具体部门的员工的所有信息。

http://www.nowcoder.com/practice/c39cbfbd111a4d92b221acec1c7c1484

select *
from employees as e
where not EXISTS(
select d.emp_no
from dept_emp as d
where e.emp_no = d.emp_no);

总感觉以前见过EXISTS,但是,查看了自己以前的笔记,没有注意到有这个关键字。

重新学习一下吧。

EISTS关键字

1. (NOT)EXISTS语句形式

-- 查找满足子查询条件的主查询结果
select A, B from table1 
where exists(select C from table2 where table1.id=table2.id);

-- 查找不满足子查询条件的主查询结果
selectt A, B from table1
where not exists (select C from table2 where table1.id=table2.id)

2. (NOT)EXISTS语句实现逻辑

2.1. EXISTS语句逻辑

首先,执行一次外部查询,并缓存结果集,如 SELECT * FROM A

其次,遍历外部查询结果集的每一行记录R,代入子查询中作为条件进行查询,如 SELECT 1 FROM B WHERE B.id = A.id

最后,如果子查询有返回结果,则EXISTS子句返回TRUE,这一行R可作为外部查询的结果行,否则不能作为结果

2.2. NOT EXIST语句逻辑

首先,执行一次外部查询,并缓存结果集,如 SELECT * FROM A

其次,遍历外部查询结果集的每一行记录R,代入子查询中作为条件进行查询,如 SELECT 1 FROM B WHERE B.id = A.id

最后,如果子查询没有返回结果,则 NOT EXISTS子句返回TRUE,这一行R可作为外部查询的结果行,否则不能作为结果

MySQL试题答案解析 文章被收录于专栏

MySQL在线编程重点试题解析

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务