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

MySQLのLEFT JOINとは?初心者でもわかる使いどころと書き方をやさしく解説

MySQLのLEFT JOINとは?使いどころを理解する
MySQLのLEFT JOINとは?使いどころを理解する

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

生徒

「データベースの表をくっつけるって聞いたんですが、LEFT JOINって何をするものなんですか?」

先生

「LEFT JOINは、左側の表を基準にして、右側の表の情報を合体させる方法です。右側にデータがなくても、左側の情報は必ず表示されます。」

生徒

「右側にデータがなくても表示される、というのがよく分かりません……」

先生

「名簿と提出物の表を想像してください。提出していない人も含めて名簿全員を表示したいときに使うのがLEFT JOINです。」

1. LEFT JOINを理解するための前提知識

1. LEFT JOINを理解するための前提知識
1. LEFT JOINを理解するための前提知識

MySQLは、たくさんのデータを表の形で保存するデータベース管理システムです。 表はエクセルの表や紙の一覧表と同じで、横が項目、縦がデータの並びになっています。

JOINとは、複数の表を共通の情報を使って一つにまとめる操作です。 その中でもLEFT JOINは、「左の表を主役にする」という特徴があります。

2. LEFT JOINとは何か?

2. LEFT JOINとは何か?
2. LEFT JOINとは何か?

LEFT JOINは、「左側のテーブルにあるデータをすべて表示し、右側に一致するデータがあれば一緒に表示する」JOINです。 もし右側に対応するデータがなければ、その部分は空欄になります。

この「空欄」は、データベースの世界ではNULL(ヌル)と呼ばれます。 NULLとは、「何も入っていない状態」を意味します。

3. サンプルで使うテーブルを確認しよう

3. サンプルで使うテーブルを確認しよう
3. サンプルで使うテーブルを確認しよう

まずは、会員情報と注文情報の2つの表を見てみましょう。


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

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

usersは会員名簿、ordersは注文履歴だと考えてください。 まだ注文したことがない人もいます。

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

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

LEFT JOINの基本構文は次の形です。 ONの後ろで、どの列同士をつなぐかを指定します。


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

このSQLを実行すると、次のような結果になります。


id | name       | age | id | user_id | product
---+------------+-----+----+---------+---------
1  | 山田太郎   | 25  | 1  | 1       | 本
1  | 山田太郎   | 25  | 2  | 1       | ペン
2  | 佐藤花子   | 19  |    |         |
3  | 鈴木一郎   | 30  | 3  | 3       | ノート
4  | 高橋美咲   | 22  |    |         |

注文していない佐藤花子さんや高橋美咲さんも、usersテーブルに存在するため必ず表示されています。 これがLEFT JOINの最大の特徴です。

5. INNER JOINとの違い

5. INNER JOINとの違い
5. INNER JOINとの違い

INNER JOINは、両方の表に一致するデータだけを表示します。 そのため、注文していない会員は結果から消えてしまいます。

「全員を一覧で見たい」のか、「共通している人だけを見たい」のかで、 LEFT JOINとINNER JOINを使い分けます。

6. LEFT JOINのよくある使いどころ

6. LEFT JOINのよくある使いどころ
6. LEFT JOINのよくある使いどころ

LEFT JOINは、「存在しているかどうかを確認したい」ときによく使われます。 例えば、未提出の人、未購入の人、未登録の設定などを探す場面です。


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

このSQLの実行結果は次のようになります。


name       | product
-----------+---------
佐藤花子   |
高橋美咲   |

IS NULLは、「空欄かどうか」を調べるための条件です。 LEFT JOINと組み合わせることで、「まだ何もしていない人」を見つけられます。

7. 初心者がつまずきやすいポイント

7. 初心者がつまずきやすいポイント
7. 初心者がつまずきやすいポイント

LEFT JOINで多い失敗は、WHERE句の条件の書き方です。 右側の表の条件をそのまま書くと、意図せずINNER JOINのような結果になることがあります。

「左の表を必ず表示したい」という目的を忘れず、 NULLの扱いを意識することが大切です。

カテゴリの一覧へ
新着記事
New1
MySQL
MySQLのWHERE句でNOT条件を指定する方法を徹底解説!初心者向けSQL条件検索ガイド
New2
PostgreSQL
PostgreSQLのLIMIT・OFFSETとパフォーマンス問題を完全解説|初心者でもわかる安全な使い方
New3
MySQL
MySQLのUPDATE文でデータを更新する基本を徹底解説|SQL初心者でもわかるデータベース更新入門
New4
PostgreSQL
PostgreSQLのOFFSET完全入門|並び替えと組み合わせてデータをスキップする方法を初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
PostgreSQL
PostgreSQLのDISTINCT完全ガイド|SQLで重複データを除外する方法を初心者向けに解説
No.2
Java&Spring記事人気No2
PostgreSQL
PostgreSQLの主キー・外部キーを完全解説!初心者でもわかる設定方法と考え方
No.3
Java&Spring記事人気No3
PostgreSQL
PostgreSQLとは?初心者向けに特徴をわかりやすく解説
No.4
Java&Spring記事人気No4
PostgreSQL
PostgreSQLのLEFT JOIN完全入門!不足データを補いながらテーブル結合する仕組みをやさしく解説
No.5
Java&Spring記事人気No5
PostgreSQL
PostgreSQLのUPDATE文の使い方(部分更新・条件更新)
No.6
Java&Spring記事人気No6
PostgreSQL
PostgreSQLスキーマ設計のベストプラクティス完全ガイド|初心者でもわかるデータベース整理術
No.7
Java&Spring記事人気No7
PostgreSQL
PostgreSQLスキーマ作成・削除完全ガイド!初心者でもわかるデータベース設計の基礎
No.8
Java&Spring記事人気No8
PostgreSQL
PostgreSQLの権限管理を完全解説|スキーマ単位で理解するデータベースセキュリティの基礎