今天一个开发问到一个not exists问题,小小做个实验
实验1
sql> select * from emp e1 where not exists (select 1 from emp e2 where e1.mgr = e2.empno);
empno ename job mgr hiredate sal comm deptno
---------- ---------- --------- ---------- ------------------ ---------- ---------- ----------
7839 king president 17-nov-81 5000 10
实验2
sql> select * from emp e1 where not exists (select 1 from emp e2 where e1.empno = e2.mgr);
empno ename job mgr hiredate sal comm deptno
---------- ---------- --------- ---------- ------------------ ---------- ---------- ----------
7369 smith clerk 7902 17-dec-80 800 20
7499 allen salesman 7698 20-feb-81 1600 300 30
7521 ward salesman 7698 22-feb-81 1250 500 30
7654 martin salesman 7698 28-sep-81 1250 1400 30
7844 turner salesman 7698 08-sep-81 1500 0 30
7876 adams clerk 7788 23-may-87 1100 20
7900 james clerk 7698 03-dec-81 950 30
7934 miller clerk 7782 23-jan-82 1300 10
8 rows selected.
1、2 sql大致一样,出现的结果却完全不一样
实验1是这里有多少人没有manager
实验2是这里多少人存在manager
