CS/Database

[RDBMS] SQL JOIN(4) - FULL OUTER JOIN, EXCLUSIVE LEFT JOIN

칸타탓 2019. 5. 27. 04:21

* 실습 테이블

topic
tid title description author_id
1 HTML HTML is … 1
2 CSS CSS is … 2
3 Database Database is .. 1
4 Oracle Oracle is … NULL
author
aid name city profile_id
1 egoing seoul 1
2 leezche jeju 2
3 blackdew namhae 3
profile
pid title description
1 developer developer is …
2 designer designer is …
3 DBA DBA is ..

 

FULL OUTER JOIN

 

왼쪽과 오른쪽에 있는 모든 행을 가져오는 것. => 합집합

거의 지원하지 않는다.

 

author_id = aid에 맞게 모든 행을 가져온다. 그리고 중복되는 행을 지운다.

 

SELECT * FROM topic FULL OUTER JOIN author ON topic.author_id = author.id

 

지원하지 않는다면 아래와 같이 사용할 수도 있다.

SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.id) UNION (SELECT * FROM topic RIGHT JOIN author ON topic.author_id = author.id

 

1. 왼쪽 행에 맞춰 모두 가져온다.

tid title description author_id aid name city profile_id
1 HTML HTML is … 1 1 egoing seoul 1
2 CSS CSS is … 2 2 leezche jeju 2
3 Database Database is .. 1 1 egoing seoul 1
4 Oracle Oracle is … NULL NULL NULL NULL NULL

2. 오른쪽 행에 맞춰 모두 가져온다.

tid title description author_id aid name city profile_id
1 HTML HTML is … 1 1 egoing seoul 1
2 CSS CSS is … 2 2 leezche jeju 2
3 Database Database is .. 1 1 egoing seoul 1
4 Oracle Oracle is … NULL NULL NULL NULL NULL
1 HTML HTML is … 1 1 egoing seoul 1
3 Database Database is .. 1 1 egoing seoul 1
2 CSS CSS is … 2 2 leezche jeju 2
NULL NULL NULL NULL 3 blackdew namhae 3

3. 중복 행을 제거한다.

tid title description author_id aid name city profile_id
1 HTML HTML is … 1 1 egoing seoul 1
2 CSS CSS is … 2 2 leezche jeju 2
3 Database Database is .. 1 1 egoing seoul 1
4 Oracle Oracle is … NULL NULL NULL NULL NULL
NULL NULL NULL NULL 3 blackdew namhae 3

 

EXCLUSIVE LEFT JOIN

 

A 또는 B 테이블에만 존재하는 것을 찾아내는 것. 거의 사용하지 않는다.

* A 테이블에만 존재하는 Oracle을 가져오고 싶을 때

LEFT JOIN으로 값을 가져온 다음에, WHERE절을 사용한다.

SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.aid WHERE author.aid is NULL

tid title description author_id aid name city profile_id
4 Oracle Oracle is … NULL NULL NULL NULL NULL

 

'CS > Database' 카테고리의 다른 글

[RDBMS] SQL JOIN(3) - INNER JOIN  (0) 2019.05.27
[RDBMS] SQL JOIN(2) - LEFT OUTER JOIN  (0) 2019.05.27
[RDBMS] SQL JOIN(1) - JOIN  (0) 2019.05.27