차이점
- on과 where에 따라서 join의 범위가 달라진다.
- on에 where에 쓰일 조건을 함께 주면 조건을 만족하는 행만 채워진다.(빈부분은 null)
- on후에 where 조건을 준다면 최종적으로 결합된 행들에서 필터링 된다.
예시 테이블

where조건을 포함한 on
SELECT *
FROM test1 a LEFT JOIN test2 b
ON (a.aa = b.aa)
WHERE b.cc = 7; --모든 것을 join 후 최종적인 행에서 필터링
결과
1 | 4 | 1 | 7
where 따로 준 on
1.left join
SELECT *
FROM test1 a LEFT JOIN test2 b
ON (a.aa = b.aa AND b.cc = 7); --b.cc가 7인 행들만 join 시키고 나머진 null로 fill
결과
1 | 4 | 1 | 7
2 | 5 | null | null
3 | 6 | null | null
2.join
SELECT *
FROM test1 a JOIN test2 b
ON (a.aa = b.aa AND b.cc = 7); --where로 최종적으로 필터링 했을때와 동일하게 출력
결과
1 | 4 | 1 | 7