[SQL] ON과 WHERE의 차이
ON
ON을 사용하면 조인 대상을 필터링 하고 조인할 수 있다.
SELECT d.deptno, sum(e.sal)
FROM dept d LEFT OUTER JOIN emp e
ON d.deptno = e.deptno AND e.sal > 2000
GROUP BY d.deptno
ORDER BY d.deptno
급여가 2000이 넘는 직원만 dept 테이블과 조인하여 SELECT절을 실행시킬 수 있다.
ON은 조인조건이므로 부서에 직원이 없거나 급여가 2000이 넘는 직원이 없더라도 조인 테이블에 부서에 대한 데이터가 남아있다. 참고로 내부 조인은 ON과 WHERE의 결과가 같다.
WHERE
WHERE을 사용하면 조인 후 조인테이블의 데이터를 행 단위로 걸러내는 역할을 한다.
SELECT d.deptno, sum(e.sal)
FROM dept d LEFT OUTER JOIN emp e
ON d.deptno = e.deptno
WHERE e.sal > 2000
GROUP BY d.deptno
ORDER BY d.deptno
직원이 없거나 급여가 2000이 넘는 직원이 한명도 없는 경우 해당 부서에 대한 데이터는 조인테이블에서 걸러진다.
댓글남기기