--EXISTS 是 sql中的一个条件运算符,它用于判断一个子查询是否返回了一个结果集,如果返回结果集,则返回true ,否则返回 False
EXISTS 语法:SELECT
字段名
FROM 表1
WHERE 筛选条件
AND EXISTS(
SELECT 1 FROM 表2
WHERE 值1 =值2 -- 关联的字段
AND 筛选条件
)
查询那个部门没有人
SELECT
DEPTNO
FROM DEPT D
WHERE NOT EXISTS (
SELECT 1
FROM EMP E
WHERE E.DEPTNO = D.DEPTNO);
-- IN 和 EXISTS 在查询效率上的区别 主要取决于 具体的查询语句,和数据量
一般来说, 在数据量小的情况下, IN 和 EXISTS 的查询效率差别不大, 甚至 IN 可能 略微优于 EXISTS
但是,在处理大量数据的时候, EXISTS 往往比 IN 更快.
因为 , EXISTS 使用了一种被称为半连接的计数,只需要查找一次匹配项即可返回结果, 而 IN 需要扫描 整个集合来查找匹配项