본문 바로가기

SQL/SQL 기초

SQL - JOIN 할 때 ON과 WHERE의 차이

반응형
[공통점]

둘 다 JOIN을 위한 조건절로 쓰인다.

 

 

[차이점]


ON - JOIN이 실행되기

WHERE - JOIN이 실행된

 

* 모든 JOIN은 LEFT JOIN으로 통일함

 

예시1. ON

JOIN에 우선 이름으로 테이블을 연결한 뒤

 

AND t2.몸무게 = 50 이라는 조건을 준 상황이다.

 

 

ON은 JOIN이 되기 전에 실행되므로 

 

간단하게 보면 1번과 3번의 LEFT JOIN이 된 것처럼 보이는 것이다.

 

 

나머지 B, C의 몸무게는 NULL값을 가진다.

 

 

 

 

 

 

예시2. WHERE

WHERE은 JOIN이 실행된 후 적용된다.

 

우선 가운데 회색 테이블은 이름을 기준으로 t1과 t2를 JOIN한 것이다.

 

 

여기서 WHERE 조건으로 t2의 몸무게가 50인 데이터만 필터링 하면

 

맨 오른쪽의 하나의 행만 있는 테이블이 보여지게 된다.

 

 

 

 

 

이렇게 결과로만 봐도 확연히 다른 것을 볼 수 있다.

 

 

 

 

차이를 아는 것만큼 활용하는 법도 중요하다.

 

어떤 고객이 여행지를 국외로 떠났는지 파악하기 위해서

 

ON 조건을 이용했다.

 

 

모든 고객의 데이터와 함께

 

해당 고객이 국외로 갔는지(유무)에 대한 정보를 붙여내는 것이다.

 

 

 

반대로 WHERE은

 

국외 여행지로간 고객들만 남겨진다.

 

 

 

어떤 결과를 보고 싶은지 고려해서 적절히 조건을 이용해야 한다.

 

 

반응형

'SQL > SQL 기초' 카테고리의 다른 글

SQL - UNION, ORDER BY 팁  (0) 2020.09.02
SQL - 실무에 많이 쓰이는 JOIN은?  (0) 2020.09.01