[SQL] join할때 on 과 where의 차이

핵심🧐

on : join 전에 조건을 필터링
where : join 후에 조건을 필터링

그게 왜?🤔

  • inner join 하면 둘다 차이 없음
  • outer join 시 on으로 해야 원하는 결과를 얻을 수 있음(outer table에 null값 포함하여 행들이 다 살아있는 상태)

on 명령어

SELECT t1.col1, t1.col2, t2.col1, t2.col2
FROM   table1 t1
LEFT OUTER JOIN table2 t2
ON t1.col1 = t2.col1
AND t2.col2 = '일';

  • on 명령어로 join 전에 조건을 걸어줌.
  • t1 값들이 살아있음

where 명령어

select t1.col1, t1.col2, t2.col1, t2.col2
from  table1 t1
LEFT OUTER JOIN table2 t2
ON t1.col1 = t2.col1
where t2.col2 = '일';

  • join 및 모든 조건이 끝나고 where로 추가 조건을 걸어준 느낌으로 받아들이면 됨.

Reference

좋은 웹페이지 즐겨찾기