Query Go
どちらかにあれば残して結合 - FULL OUTER JOIN の使い方・オプション・サンプル

どちらかにあれば残して結合 - FULL OUTER JOIN

左右どちらかにある行をすべて返し、もう片方が無ければ NULL で埋める結合

概念図

FULL OUTER JOIN diagram

構文

sql
SELECTFROM A FULL OUTER JOIN B ON A.key = B.key

サンプル

2 つのテーブルを突き合わせて、どちらか一方にしか無い行も含めて取得

sql
SELECT COALESCE(a.id, b.id) AS id, a.value, b.value
FROM table_a a
FULL OUTER JOIN table_b b ON b.id = a.id;

FULL OUTER JOIN とは

FULL OUTER JOIN は 左右どちらの行も全て返す結合です。マッチしない側は NULL で埋められます。データの突合せ・差分検出によく使われます。

RDBMS による対応状況

  • PostgreSQL / SQL Server / Oracle: ネイティブに FULL OUTER JOIN をサポート
  • MySQL / SQLite: 直接サポートなし。LEFT JOINRIGHT JOINUNION で繋ぐ書き換えが必要

関連トピック