JOIN 절 무지성 A.column = B.column 금지!

Gi Woon Lee·2025년 4월 15일

SQL

목록 보기
31/33
  • join 할 때 무조건 PK끼리 PK1 = PK2 식으로 합쳐버린다.
  • 이는 join의 수 많은 기능을 지극히 한정적으로 사용하는 나쁜 습관이다.
  • 예시와 함께 알아보자.
select
	*
from 
	A join B
	on A.date = B.date

위 쿼리의 결과는 두 테이블의 date 칼럼이 같은 경우 table을 join해서 반환한다.

만약 "전날보다 특정 값이 큰 경우만 반환" 하라고 문제가 주어지면 어떻게 할 것인가?

이것 또한 join을 통해 해결할 수 있다.

select
	*
from
	A join B
    on datediff(A.date, B.date) = 1
where 
	A.value > B.value

위 쿼리의 경우 B테이블 날짜와 A테이블 날짜가 하루 차이나면서 A의 값이 더 큰 경우를 반환한다.

  • 핵심 정리
    1. JOIN ~ ON 은 관성적으로 칼럼 = 칼럼 으로만 사용하지만 사실 더 다양하게 사용할 수 있다.
    2. ON 은 마치 WHERE처럼 사용할 수 있다는 것을 유념하자.

0개의 댓글