カテゴリ: PostgreSQL 更新日: 2026/03/18

PostgreSQLのFULL OUTER JOIN完全解説|初心者でもわかる全件取得SQL入門

PostgreSQLのFULL OUTER JOINで全件取得する方法
PostgreSQLのFULL OUTER JOINで全件取得する方法

先生と生徒の会話形式で理解しよう

生徒

「PostgreSQLのJOINって種類が多くて混乱します。FULL OUTER JOINは何をするものなんですか?」

先生

「FULL OUTER JOINは、2つの表にあるデータを、条件に合う・合わないに関係なく、すべて表示するための方法です。名簿を2冊並べて、載っている人を全員書き出すイメージですね。」

生徒

「表にしか載っていない人も表示されるんですか?」

先生

「はい。どちらか一方にしか存在しないデータも、空白を使いながらすべて表示されます。SQLが初めてでも、紙の表を想像すると理解しやすいですよ。」

1. PostgreSQLとSQLの基本

1. PostgreSQLとSQLの基本
1. PostgreSQLとSQLの基本

PostgreSQLは、データベースと呼ばれる「情報を表の形で保存する仕組み」の一つです。データベースは、学校の名簿や住所録のように、行と列で情報を管理します。そのデータベースを操作するための言葉がSQLです。

SQLを使うと、必要な情報を探したり、複数の表を組み合わせて表示したりできます。JOINは、その中でも「表と表をつなぐ」ための重要な考え方です。

2. JOINとは何かをやさしく理解する

2. JOINとは何かをやさしく理解する
2. JOINとは何かをやさしく理解する

JOINとは、2つ以上の表を共通の項目で結びつける操作です。例えば「会員情報の表」と「注文履歴の表」を、同じ会員IDでつなぐことで、誰が何を注文したかが分かります。

紙の名簿を横に並べて、同じ番号の人を線で結ぶイメージをすると、JOINの役割が見えてきます。

3. INNER・LEFT・RIGHT JOINとの違い

3. INNER・LEFT・RIGHT JOINとの違い
3. INNER・LEFT・RIGHT JOINとの違い

INNER JOINは、両方の表に存在するデータだけを表示します。LEFT JOINは、左側の表をすべて表示し、右側に無い場合は空白になります。RIGHT JOINは、その逆です。

FULL OUTER JOINは、これらすべてを含んだ考え方で、「左右どちらにしか無いデータも全部表示する」という特徴があります。

4. FULL OUTER JOINの基本構文

4. FULL OUTER JOINの基本構文
4. FULL OUTER JOINの基本構文

FULL OUTER JOINは、2つの表を完全に結合します。どちらか一方にしか存在しない行も結果に含まれます。データが存在しない側の列にはNULLという空白の値が入ります。


SELECT *
FROM users
FULL OUTER JOIN orders
ON users.id = orders.user_id;

5. サンプルテーブルで理解するFULL OUTER JOIN

5. サンプルテーブルで理解するFULL OUTER JOIN
5. サンプルテーブルで理解するFULL OUTER JOIN

まずは、2つの表の中身を確認します。


users テーブル
id | name       | age
---+------------+-----
1  | 山田太郎   | 25
2  | 佐藤花子   | 19
3  | 鈴木一郎   | 30
4  | 高橋次郎   | 40

orders テーブル
id | user_id | product
---+---------+---------
1  | 1       | 本
2  | 2       | ペン
3  | 5       | ノート

SELECT users.name, orders.product
FROM users
FULL OUTER JOIN orders
ON users.id = orders.user_id;

name       | product
-----------+---------
山田太郎   | 本
佐藤花子   | ペン
鈴木一郎   | NULL
高橋次郎   | NULL
NULL       | ノート

6. NULLの意味と扱い方

6. NULLの意味と扱い方
6. NULLの意味と扱い方

NULLとは、「値が存在しない」ことを表します。0や空文字とは違い、そもそも情報が無い状態です。FULL OUTER JOINでは、片方にしか無いデータを表示するため、NULLがよく登場します。

初心者の方は「空欄」と考えると理解しやすいです。

7. WHERE句と組み合わせる注意点

7. WHERE句と組み合わせる注意点
7. WHERE句と組み合わせる注意点

FULL OUTER JOINの結果にWHERE句を使うと、条件によってはデータが消えてしまうことがあります。NULLは普通の比較ができないため、IS NULLという特別な書き方を使います。


SELECT *
FROM users
FULL OUTER JOIN orders
ON users.id = orders.user_id
WHERE orders.product IS NULL;

8. FULL OUTER JOINが役立つ場面

8. FULL OUTER JOINが役立つ場面
8. FULL OUTER JOINが役立つ場面

FULL OUTER JOINは、データの抜け漏れを確認したいときに便利です。例えば、登録はあるが注文が無い人、注文はあるが登録情報が無い人を同時に確認できます。

業務では、データチェックや一覧表示に使われることが多く、PostgreSQLのJOIN入門では必ず知っておきたい考え方です。

カテゴリの一覧へ
新着記事
New1
PostgreSQL
PostgreSQLのFULL OUTER JOIN完全解説|初心者でもわかる全件取得SQL入門
New2
MySQL
MySQLのLIMIT(OFFSET付き)の使い方を完全解説!SQL初心者でもわかるデータ取得件数の制御方法
New3
PostgreSQL
PostgreSQL集約関数のNULL完全解説|GROUP BYでNULLはどう扱われるのか初心者向けに説明
New4
MySQL
MySQLのLIMITの使い方を完全解説!初心者でも理解できるSQLの取得件数制御(ORDER BY・LIMIT入門)
人気記事
No.1
Java&Spring記事人気No1
PostgreSQL
PostgreSQLのUPDATE文の使い方(部分更新・条件更新)
No.2
Java&Spring記事人気No2
PostgreSQL
PostgreSQLでよく使うデータ型一覧(文字列・数値・日付)
No.3
Java&Spring記事人気No3
PostgreSQL
PostgreSQLのSERIALとIDENTITYの違いを解説
No.4
Java&Spring記事人気No4
PostgreSQL
PostgreSQLでスキーマを分割するメリット
No.5
Java&Spring記事人気No5
PostgreSQL
PostgreSQLのGROUP BY完全入門!初心者でもわかる複数列での集計方法
No.6
Java&Spring記事人気No6
PostgreSQL
PostgreSQLのORDER BYの基本(昇順・降順)
No.7
Java&Spring記事人気No7
PostgreSQL
PostgreSQLユーザーとロール作成完全ガイド!初心者でもわかるデータベース権限管理
No.8
Java&Spring記事人気No8
PostgreSQL
PostgreSQLの主キー・外部キーを完全解説!初心者でもわかる設定方法と考え方