FULL OUTER JOIN은 다양한 DBMS에서 갖추고 있는 기능이지만, MySQL에서는 지원되지 않습니다.
즉, 한 번의 쿼리로 양쪽 테이블의 모든 행을 포함하는 결과를 얻을 수 없어요.
하지만 간단히 LEFT JOIN과 RIGHT JOIN을 조합하면
동일한 결과를 만들 수 있습니다.
| id | name |
|---|---|
| 1 | Alice |
| 2 | Bob |
| id | score |
|---|---|
| 2 | 80 |
| 3 | 90 |
두 테이블의 모든 데이터를 포함한 결과(LEFT + RIGHT 조합) 출력하기
SELECT A.id
, A.name
, B.score
FROM A
LEFT JOIN B
ON A.id = B.id
UNION
SELECT A.id
, A.name
, B.score
FROM A
RIGHT JOIN B
ON A.id = B.id;
| id | name | score |
|---|---|---|
| 1 | Alice | NULL |
| 2 | Bob | 80 |
| 3 | NULL | 90 |
✔️ FULL OUTER JOIN이 지원되지 않는 MySQL에서는 LEFT JOIN + RIGHT JOIN + UNION 조합이 대체 방식입니다.
✔️ UNION은 중복을 제거하고 UNION ALL은 중복을 포함하므로, UNION을 사용하여야 합니다.