본문 바로가기

SQL

SQL JOIN(FULL JOIN, CROSS JOIN, +SELF JOIN) 알아보기

반응형

FULL JOIN과 CROSS JOIN도 표를 만들어보면 이해가 쏙쏙 된다.

FULL JOIN

먼저 FULL JOIN

테이블을 다음과 같이 가정하고 두 테이블의 ID를 KEY로 하여

FULL JOIN을 하면 다음과 같이 된다.

 

테이블명 : LEFT_TABLE

ID val1
1 L1
2 L2
3 L3
4 L4

 

테이블명: RIGHT_TABLE

ID val2
3 R3
4 R4
5 R5
6 R6

 

아래와 같은 쿼리문을 작성해 실행하게 되면

SELECT LEFT_TABLE.ID AS L_ID,
       LEFT_TABLE.VAL1 AS L_VAL,
       RIGHT_TABLE.ID AS R_ID,
       RIGHT_TABLE.VAL2 AS R_VAL
FROM LEFT_TABLE
FULL JOIN RIGHT_TABLE
USING(ID)
;

 

 

다음과 같은 결과를 얻을 수 있게된다.

L_ID R_ID L_VAL R_VAL
1   L1  
2   L2  
3 3 L3 R3
4 4 L4 R4
  5   R5
  6   R6

 

 

CROSS JOIN

이것도 테이블을 두 개 만들어 나타내보자

 

테이블명 : LEFT_TABLE

ID
1
2
3

테이블명: RIGHT_TABLE

ID
A
B
C

 

위 두개의 테이블을 CROSS JOIN 하는 쿼리문을 다음과 같이 작성해 실행해보자.

SELECT LEFT_TABLE.ID AS L_ID,
       RIGHT TABLE.ID AS R_ID
 FROM LEFT_TABLE
 CROSS JOIN RIGHT_TABLE
 ;

아래와 같은 결과를 얻게 된다.

L_ID R_ID
1 A
1 B
1 C
2 A
2 B
2 C
3 A
3 B
3 C

SELF JOIN

USER_ID NAME SUB_ID
1 N1 3
2 N2 4
3 N3  
4 N4  
5 N5  

 

USER 중 SUB ID를 가진 것만을 선택하는 쿼리문을 작성해보자.

이 때 SELF JOIN을 활용할 수 있다.

SELF JOIN은 똑같은 테이블이 2개 있다고 이해하면 쉽다.

 

하나의 테이블을 두 번 불러오고, WHERE절을 이용해 USER_ID와 SUB_ID를 KEY로 해준다.

아래와 같이 쿼리문을 실행하게 되면

SELECT A.USER_ID
FROM USER AS A, USER AS B
WHERE A.USER_ID=B.SUB_ID
;

 

아래와 같은 결과를 얻을 수 있다.

USER_ID NAME SUB_ID
1 N1 3
2 N2 4
반응형