반응형
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 |
반응형
'SQL ' 카테고리의 다른 글
SUBSTRING(), REPLACE(), POSITION() and COALESE() (0) | 2021.04.23 |
---|---|
SQL 너 도대체 어떻게 공부 하는데...(경험을 중심으로) (0) | 2020.03.26 |
SQL에서 JOIN(INNER JOIN, LEFT and RIGHT JOIN)을 알아보자 (0) | 2019.09.14 |
MySQL 배우기 2탄 (0) | 2019.08.13 |
MySQL 배워보기(간단주의) (0) | 2019.07.30 |