JOIN

넘어산·2023년 12월 21일
0

TIL

목록 보기
17/37

JOIN

  • SQL 조인은 두 개 혹은 그 이상의 테이블들을 공통 필드를 가지고 머지하는데 사용한다. 분산되어 있던 정보를 통합하는 데 사용된다. 조인의 방식에 따라 다음 두 가지가 달라진다. 보통 INNER와 LEFT로 95% 해결 가능
  1. 어떤 레코드들이 선택되는지?
  2. 어떤 필드들이 채워는지?

SELECT A.*, B.*
FROM raw_data.table1 A
___ JOIN raw_date.table2 B ON A.key1 = B.key1 and A.key2 = B.key2
WHERE A.ts >= '2019-01-01;;

INNER, LEFT, RIGHT, CROSS

고려할 점

1. 먼저 중복 레코드가 없고 Primary key의 uniqueness가 보장됨을 체크

2. 조인하는 테이블간의 관계를 명확하게 정의

  • One to One
  • One to Many
  • Many to One: 사실상 one to many와 동일
  • Many to Many

3. 어느 테이블을 베이스로 잡을지(From에 사용할지) 결정


JOIN

inner join

  • 양쪽 테이블에서 매치가 되는 레코드들만 리턴함
  • 양쪽 테이블의 필드가 모두 채워진 상태

left join

  • 왼쪽 테이블의 모든 레코드 리턴
  • 오른쪽 테이블 필드는 매칭되는 경우만 채워진 상태
    • 매칭이 안되는 레코드들은 null로 채워짐

full join

  • 왼쪽 테이블과 오른쪽 테이블 모든 레코드들 리턴
  • 매칭되는 경우, 양쪽 테이블들의 모든 필드들이 채워진 상태
    • 없으면 null로 채워짐

cross join

  • 왼쪽 테이블과 오른쪽 테이블의 모든 조합 리턴
  • l x r

self join

  • 동일한 테이블을 alias만 달리해서 자기 자신과 조인

0개의 댓글