OUTER JOIN
에서 다음 SQL (혼돈 스러울 수도 있음)에서 혼란 스럽습니다.
저는 작은 테이블 emp
과 deptno
을 가지고 있습니다. 즉, 직원 및 부서에 대한 레코드가 있습니다. 그들의 관계는 분명히 1-N
입니다 (그러나 이것은 부적절합니다).
외부 조인을 사용하여 거기서 근무하는 직원이없는 부서를 찾으려고합니다. 그래서 올바른 해결책은 OUTER JOIN
이라고 생각했습니다. 다음 작업을 수행 할 경우
:왜 왼쪽 외부 조인이 잘못된 결과를 생성합니까?
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;
내가 얻을
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
님의 오해는 무엇입니까?
어디 조건 e.deptno는 또한 null' – chetan
입니다 절은'당신이 별칭을 사용할 수없는 곳에서 두 번째 조건을 넣어해야합니다. – chetan
@chetan : 그래서'join on and or'을 할 수 없습니까? – Jim