본문 바로가기
작은성취들

[MSSQL] JOIN시 ON 절에 조건을 붙여줄 때 주의할 점

by 질서정연_ 2024. 3. 31.

 

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

 

Decoding SQL: WHERE vs. ON Explained | Atlassian

Dive into the nuances of SQL with our guide on WHERE vs. ON. Master your database queries and elevate your SQL skills today.

www.atlassian.com

 

 
 

댓글