728x90
left join(혹은 left outer join) 시 주의할 점에 대해 알아보자.
left join 시 왼쪽에 있는 테이블에만 집중해서 실수를 할 수 있다.
left join은 왼쪽 테이블을 기준으로 오른쪽 데이터를 불러오는 것이다.
그런데 여기에는 함정이 있다.
위와 같은 결과를 얻고자 한 상황이다.
위 예시는 N:1 관계이다. 그런데 1:N 관계가 되면 전체 행의 개수가 왼쪽 테이블의 행 개수보다 늘어나고 중복 데이터가 발생한다.
그러므로 left join 시 distinct나 group by로 중복제거를 해야 한다.
데이터를 검증할 때 count를 이용해서 행의 개수가 맞는지 확인하는 방식을 사용한다.
틀릴 이유가 없는데 행의 개수가 다른 경우 이런 함정에 빠진 케이스가 많았다.
위의 사항에 유의하며 개발하는 습관을 들여야겠다.
참조:https://brunch.co.kr/@qqplot/22?
'DB > SQL' 카테고리의 다른 글
[SQL] ORDER BY와 JOIN 사용 시 정렬 제대로 안됨... (0) | 2022.10.09 |
---|---|
[MySQL] SELECT ~ FOR UPDATE 란? (0) | 2022.10.02 |
[SQL] ROW 중복제거(DISTINCT, GROUP BY) (0) | 2021.10.12 |
댓글