OUTER JOIN 이란?
JOIN 하는 여러 테이블에서 한 쪽에는 데이터가 있고 한 쪽에는 데이터가 없을 때, 데이터가 있는 쪽의 모든 데이터를 가져오면서 데이터가 없는 쪽의 데이터를 JOIN 해서 가져오고 싶을 때 사용한다.
예시
TABLE_1
id | name |
1 | 짱구 |
2 | 철수 |
3 | 맹구 |
TABLE_2
id | product |
1 | 사탕 |
3 | 과자 |
5 | 과자 |
TABLE_1 에 OUTER JOIN 하면
id | name | id | product |
1 | 짱구 | 1 | 사탕 |
2 | 철수 | NULL | NULL |
3 | 맹구 | 3 | 과자 |
OUTER JOIN (LEFT, RIGHT, FULL)
LEFT OUTER JOIN
TABLE_1 에 JOIN 되고, TABLE_1에 없는 값은 NULL 로 보여줌
SELECT *
FROM TABLE_1
LEFT OUTER JOIN TABLE_2
ON TABLE_1.id = TABLE_2.id
id | name | id | product |
1 | 짱구 | 1 | 사탕 |
2 | 철수 | NULL | NULL |
3 | 맹구 | 3 | 과자 |
RIGHT OUTER JOIN
TABLE_2 에 JOIN 되고, TABLE_2에 없는 값은 NULL 로 보여줌
SELECT *
FROM TABLE_1
RIGHT OUTER JOIN TABLE_2
ON TABLE_1.id = TABLE_2.id
id | name | id | product |
1 | 짱구 | 1 | 사탕 |
3 | 맹구 | 3 | 과자 |
NULL | NULL | 5 | 과자 |
FULL OUTER JOIN (ORACLE)
TABLE_1 과 TABLE_2 의 모든 내용 보여주고 없는 값은 NULL 로 보여줌
SELECT *
FROM TABLE_1
FULL OUTER JOIN TABLE_2
ON TABLE_1.id = TABLE_2.id
id | name | id | product |
1 | 짱구 | 1 | 사탕 |
2 | 철수 | NULL | NULL |
3 | 맹구 | 3 | 과자 |
NULL | NULL | 5 | 과자 |
* mysql 에는 FULL OUTER JOIN 없음
(SELECT *
FROM TABLE_1
LEFT OUTER JOIN TABLE_2
ON TABLE_1.id = TABLE_2.id)
union
(SELECT *
FROM TABLE_1
RIGHT OUTER JOIN TABLE_2
ON TABLE_1.id = TABLE_2.id)
반응형