欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

not in 与 not exists ,in 与 exists 的区别

程序员文章站 2022-07-15 08:50:47
...
in 与 exists  的区别:

语句1:
select ename from emp e where empno in (select mgr from emp);


语句2:
select ename from emp e where  exists (select 1 from emp where mgr=e.empno);


区别:in 的 语句查询会循环查询,exists 只查询一次即可,exists 查询效率较高

not in 与 not  exists的区别

语句1:
select ename from emp e where empno  not in (select mgr from emp);

由于当not in 中存在null的话讲查询出所有值

语句1修改后:
select ename from emp e where empno  not in (select mgr from emp where mgr is not null );


语句2:
select ename from emp e where not  exists (select 1 from emp where mgr=e.empno);


not  exists可以避免null值的调用,not in时刻需要考虑空值的情况,同时not  exists的效率要远远高于not in;