INNER JOIN 은 두 테이블에서 조인할 때 , 두 테이블에 모두 지정한 열의 데이터가 있어야한다.
OUTER JOIN 은 두 테이블에서 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나온다.
ON 절은 join 조건을 정의할때 사용하고 Where 은 데이터 필터링을 할 때 사용해야한다.
"사용해야한다" 라고 말하는 이유는 이렇게 해야 쿼리를 더 읽기 쉽게 짤 수 있고
잘못된 데이터를 가져오는 것을 막을 수 있기 때문이다.
예시
Inner join 절에 P.ProductID = '2' 같은 필터링 조건을 붙여줬을때는 상관이 없지만
필터링한 결과가 나오지만
같은 조건에 Left outer join 을 한 경우 Left outer join 이 모든 row 를 가져와버린다.
이 경우 P.ProductID = '2' 일때만 join 이 되고 내가 의도한 필터링이 되지않는다.
결론
ON 절은 JOIN 조건을 위해서 쓰자.
WHERE 은 필터링을 위해서 쓰자.
WHERE 절을 이용해 필터링을하는게 더 읽기쉽고 정확한 결과가 나올 수 있다.
참조
https://www.atlassian.com/data/sql/difference-between-where-and-on-in-sql
댓글