カテゴリ: PostgreSQL 更新日: 2026/01/22

PostgreSQLのLEFT JOIN完全入門!不足データを補いながらテーブル結合する仕組みをやさしく解説

PostgreSQLのLEFT JOINで不足データを補う仕組み
PostgreSQLのLEFT JOINで不足データを補う仕組み

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

生徒

「表と表をつなげると、データが消えることがあるって聞きました。本当ですか?」

先生

「使い方によっては表示されないデータがあります。でもLEFT JOINを使うと、消さずにそのまま残すことができます。」

生徒

「データが足りない場合でも大丈夫なんですか?」

先生

「はい。LEFT JOINは、足りない部分を空白のまま補って表示してくれる仕組みです。」

1. SQLとは何か?

1. SQLとは何か?
1. SQLとは何か?

SQLは、データベースという「情報を表の形で整理して保存する箱」に対して命令を出すための言語です。紙の名簿から特定の人を探したり、条件に合う人だけを抜き出したりする作業を、パソコンにお願いするための言葉です。

PostgreSQLは、このSQLを使って操作するデータベースソフトで、多くの企業やサービスで利用されています。

2. テーブルを分けて管理する理由

2. テーブルを分けて管理する理由
2. テーブルを分けて管理する理由

データベースでは、情報を一つの表にまとめず、役割ごとに複数のテーブルに分けて管理します。これは、同じ情報を何度も書かなくて済むようにするためです。

例えば、会員の名前や年齢は会員表に、購入した商品は注文表に分けて保存します。

3. LEFT JOINとは何か

3. LEFT JOINとは何か
3. LEFT JOINとは何か

LEFT JOINは、「左側に書いたテーブルのデータをすべて表示する」結合方法です。右側のテーブルに対応するデータがなくても、左側の情報は消えずに表示されます。

これは、名簿を必ず全員分表示し、情報が足りない部分は空白にするイメージです。

4. サンプルテーブルを確認しよう

4. サンプルテーブルを確認しよう
4. サンプルテーブルを確認しよう

今回使う二つのテーブルを確認します。


users テーブル
id | name       | age | email
---+------------+-----+-------------------
1  | 山田太郎   | 25  | taro@example.com
2  | 佐藤花子   | 19  | hanako@example.com
3  | 鈴木一郎   | 30  | ichiro@example.com
4  | 高橋次郎   | 22  | jiro@example.com

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

ordersには、鈴木一郎さんと高橋次郎さんの注文が登録されていません。

5. INNER JOINとの違いを知ろう

5. INNER JOINとの違いを知ろう
5. INNER JOINとの違いを知ろう

INNER JOINでは、両方のテーブルに存在するデータだけが表示されます。そのため、注文のない人は結果に出てきません。

LEFT JOINは、注文がなくても会員情報を必ず表示したいときに使います。

6. LEFT JOINの基本的な書き方

6. LEFT JOINの基本的な書き方
6. LEFT JOINの基本的な書き方

LEFT JOINは、INNER JOINと書き方がよく似ていますが、JOINの種類が違います。


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

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

7. 空白で表示されるデータの意味

7. 空白で表示されるデータの意味
7. 空白で表示されるデータの意味

結果に表示される空白は、「データが存在しない」ことを表しています。エラーではなく、情報が登録されていないだけです。

LEFT JOINでは、この空白を確認することで、「まだ注文していない人」などを見つけることができます。

8. WHEREを使って不足データを探す

8. WHEREを使って不足データを探す
8. WHEREを使って不足データを探す

LEFT JOINとWHEREを組み合わせると、足りないデータだけを抽出できます。


SELECT users.name
FROM users
LEFT JOIN orders
ON users.id = orders.user_id
WHERE orders.id IS NULL;

name
------
鈴木一郎
高橋次郎

9. 日常生活で考えるLEFT JOINの例え

9. 日常生活で考えるLEFT JOINの例え
9. 日常生活で考えるLEFT JOINの例え

LEFT JOINは、クラスの名簿を机に広げて、給食の申込書を横に並べる作業と同じです。申込書がない生徒でも、名簿から名前が消えることはありません。

PostgreSQLのLEFT JOINを理解すると、データが足りない状態も含めて確認できるようになり、管理やチェック作業がとても楽になります。

カテゴリの一覧へ
新着記事
New1
MySQL
【MySQL入門】LIMITとは何か?SELECT文で取得件数を制限する方法を初心者向けに徹底解説
New2
PostgreSQL
PostgreSQLのMAX・MIN完全解説|集約関数とGROUP BYで最大値・最小値を抽出する方法
New3
MySQL
MySQLのORDER BYで文字列を並び替える方法と注意点を徹底解説|SQL初心者向け完全ガイド
New4
PostgreSQL
PostgreSQLのSUM・AVG完全解説|集約関数とGROUP BYの計算時の注意点を初心者向けにやさしく説明
人気記事
No.1
Java&Spring記事人気No1
PostgreSQL
PostgreSQLのUPDATE文の使い方(部分更新・条件更新)
No.2
Java&Spring記事人気No2
PostgreSQL
PostgreSQLでスキーマを分割するメリット
No.3
Java&Spring記事人気No3
PostgreSQL
PostgreSQLスキーマ作成・削除完全ガイド!初心者でもわかるデータベース設計の基礎
No.4
Java&Spring記事人気No4
PostgreSQL
PostgreSQLとは?初心者向けに特徴をわかりやすく解説
No.5
Java&Spring記事人気No5
PostgreSQL
PostgreSQLの主キー・外部キーを完全解説!初心者でもわかる設定方法と考え方
No.6
Java&Spring記事人気No6
PostgreSQL
PostgreSQLでよく使うデータ型一覧(文字列・数値・日付)
No.7
Java&Spring記事人気No7
PostgreSQL
PostgreSQLのpublicスキーマの役割と扱い方
No.8
Java&Spring記事人気No8
PostgreSQL
PostgreSQLのORDER BYの基本(昇順・降順)