초보개발자의 공부정리, 생각정리 블로그로써 잘못된점이 있다면 알려주시면 감사하겠습니다!!
업무를 진행하면서 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 |