我对OUTER JOIN
.
我有 2 张小桌子emp
,deptno
即有员工及其部门的记录。他们的关系很明显1-N
(但这无关紧要)。
我正在尝试使用外部联接来查找没有员工在那里工作的部门。所以我认为正确的解决方案是OUTER JOIN
.
如果我执行以下操作:
select d.deptno as d_deptno, e.deptno as e_deptno
from dept d left outer join emp e
on d.deptno = e.deptno;
我得到:
d_deptno e_deptno
10, 10
10, 10
10, 10
20, 20
20, 20
20, 20
20, 20
20, 20
30, 30
30, 30
30, 30
30, 30
30, 30
30, 30
40, null
好的,所以我认为我需要的只是最后一行,所以我只需要修改我的查询如下:
select d.deptno as d_deptno, e.deptno as e_deptno
from dept d left outer join emp e
on d.deptno = e.deptno and e.deptno is null;
即我添加了and e.deptno is null
. 由于某种原因,如果我做e_deptno is null
了查询,则无法解析(为什么?)
但我得到的结果如下!
d_deptno e_deptno
10, null
20, null
30, null
40, null
为什么我会得到这些结果?我对OUTER JOIN
s 有什么误解?