본문 바로가기

Work

[Database] FULL OUTER JOIN

FULL OUTER JOIN 키워드는 왼쪽(테이블1) 또는 오른쪽(테이블2) 테이블 레코드에 일치하는 항목이 있을 때 모든 레코드를 반환한다. 일치하는 항목이 없을 경우 null 값으로 채워진다.

FULL OUTER JOIN과 FULL JOIN은 같다.

 

FULL OUTER JOIN Syntax

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name = table2.column_name
WHERE condition;

주의 ! FULL OUTER JOIN은 잠재적으로 굉장히 큰 result-sets을 반환할 수 있다.

 


 

예시 테이블 > Customers

Customers table

 

 

예시 테이블 > Orders

Orders table

 

위와 같은 테이블이 있을 때 아래 SQL문을 쳐보자.

 

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

 

결과 테이블은 아래와 같다.

FULL OUTER JOIN 결과 테이블

 

주의 : FULL OUTER JOIN 키워드는 양쪽 테이블의 모든 데이터를 조회한다. (다른 쪽 테이블에 일치하는 데이터가 있든 없든 상관없이) 그렇기 때문에, "Orders"에 없고 "Customers"에만 있든가, "Customers"에는 없고 "Orders"에만 있는 데이터일지라도, 해당 row들 또한 모두 리스트업 된다.

 

(해당 글은 w3school 자료를 참고해 작성했음.)