Josh 성장일기
article thumbnail

초보개발자의 공부정리, 생각정리 블로그로써 잘못된점이 있다면 알려주시면 감사하겠습니다!! 

 

업무를 진행하면서 SQL 이 많이 부족했던 저로써 현업으로 일을 시작한지 별로 되지 않았을 때 

알게된 OUTER JOIN시 WHERE절 조건과 ON절 조건문의 차이점을 정리해보려고 합니다.

 

 먼저 쿼리를 직접보면서 이해하기 위해 TEAM 테이블과 MEMBER 테이블을 생성하겠습니다.

 

TEAM에 5개 row 를 insert 하고 MEMBER 테이블에는 각 팀에 2 row 씩 member 데이터를 insert 하겠습니다.

 

 

 

 

위 2개의 테이블을 먼저 on조건절을 활용하여 team_id 가 2인 멤버들만 outer join 해보겠습니다.

 

위의 데이터의 결과 처럼 on 조건절을 사용한 경우 left join의 영향으로 모든 member가 조회되지만 

team_id 가 2 가 아닌 데이터들에는 null 이 들어가게 됩니다.

 

 

 

그럼 반대로 where 조건절에 team_id가 2인 데이터만 조회하는 조건절을 사용해보겠습니다.

위와 같이 left join을 수행하였더라도 where 조건절에 team_id =2 를 하게되면 team_id가 2 인 member만 조회되게됩니다.

 

그래서 제가 내린 결론은 on 절에서의 조건절은 join 하고자 하는 컬럼의 데이터에 대한 조건절이라면 where 조건절은 조회한 전체 row 데이터들의 필터링이라 생각하면 될거같다고 이해했습니다. 

'DB > MySQL' 카테고리의 다른 글

Lock 과 Index  (0) 2024.08.12
IN, EXISTS 의 차이  (0) 2023.07.25
profile

Josh 성장일기

@JoshDev

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그