LEFT JOINとは?SQL初心者向けに基本から使い方までわかりやすく解説
LEFT JOIN(レフトジョイン)とは、左側のテーブルにあるデータをすべて取得し、右側のテーブルで一致するデータがあれば結合して表示するSQLの機能です。
SQLでデータを検索する際、「社員は全員表示したいが、部署情報がある人だけ部署名も表示したい」といった場面で活躍します。社内SEや運用保守、システム開発では非常によく利用されるJOINの一つです。
LEFT JOINとは?
LEFT JOINは、SQL(Structured Query Language)のテーブル結合方法の一つです。
左側(FROM句で指定したテーブル)のデータは必ず表示されます。
一方、右側(JOINしたテーブル)に一致するデータが存在しない場合は、その列にはNULL(値が存在しないことを表す値)が表示されます。
LEFT JOINはどんな場面で使われるのか
IT現場では、次のようなケースで利用されています。
- 全社員を表示し、部署情報がある社員だけ部署名を表示する
- すべての商品を表示し、売上情報がある商品のみ売上金額を表示する
- 全顧客を表示し、注文履歴がある顧客だけ注文情報を表示する
- 全ユーザーを表示し、権限情報があるユーザーだけ権限名を表示する
- 契約していない顧客を抽出する
「一致しないデータも確認したい」という業務では、LEFT JOINがよく使われます。
なぜLEFT JOINが重要なのか
実際の業務では、関連データがまだ登録されていないケースがあります。
例えば、新しく社員を登録したものの、部署情報がまだ登録されていない場合でも、社員一覧には表示したいことがあります。
INNER JOINでは表示されませんが、LEFT JOINなら社員情報は表示され、部署名だけがNULLになります。
登録漏れや設定ミスの確認にも役立つため、多くのシステムで利用されています。
LEFT JOINのイメージ
社員テーブル
| 社員ID | 氏名 | 部署ID |
|---|---|---|
| 1001 | 山田 | 1 |
| 1002 | 佐藤 | 2 |
| 1003 | 鈴木 | 5 |
部署テーブル
| 部署ID | 部署名 |
|---|---|
| 1 | 総務部 |
| 2 | 営業部 |
LEFT JOINを実行すると次のようになります。
| 社員ID | 氏名 | 部署名 |
|---|---|---|
| 1001 | 山田 | 総務部 |
| 1002 | 佐藤 | 営業部 |
| 1003 | 鈴木 | NULL |
部署ID「5」は部署テーブルに存在しませんが、社員情報は表示されます。
LEFT JOINの基本構文
SELECT * FROM 社員 LEFT JOIN 部署 ON 社員.部署ID = 部署.部署ID;
ON句では、どの列同士を関連付けるかを指定します。
INNER JOINとの違い
| 比較項目 | INNER JOIN | LEFT JOIN |
|---|---|---|
| 一致するデータ | 表示する | 表示する |
| 一致しない左側データ | 表示しない | 表示する |
| NULLが表示される | 基本的にない | ある |
| 登録漏れの確認 | 苦手 | 得意 |
初心者は「LEFT JOINは左側をすべて表示する」と覚えると理解しやすくなります。
実際のIT現場での利用例
| 業務 | 利用例 |
|---|---|
| 社員管理 | 部署未登録の社員を確認する |
| 販売管理 | 売れていない商品を調査する |
| 顧客管理 | 注文履歴がない顧客を抽出する |
| 会員管理 | 契約していない会員を確認する |
| システム運用 | 登録漏れデータを調査する |
業務でよくあるトラブル
NULLが大量に表示される
結合条件が間違っている、または右側テーブルのデータが不足している可能性があります。
取得件数が想定より多い
LEFT JOINは左側テーブルをすべて表示するため、INNER JOINより件数が多くなることがあります。
必要なデータが表示されない
WHERE句でNULLを除外してしまうと、LEFT JOINの意味がなくなる場合があります。
原因の切り分け
| 確認項目 | 確認内容 |
|---|---|
| 結合キー | 正しい列で結合しているか |
| データ型 | データ型が一致しているか |
| NULL | 結合キーにNULLがないか |
| WHERE句 | NULLを除外していないか |
| 登録漏れ | 右側テーブルにデータが存在するか |
確認する順番
- 左側テーブルのデータ件数を確認する
- 右側テーブルに対象データがあるか確認する
- 結合キーを確認する
- ON句を確認する
- WHERE句を確認する
- NULLの件数を確認する
GUIでの確認方法
- SQL Server Management Studio(SSMS)
- MySQL Workbench
- DBeaver
- pgAdmin
- Oracle SQL Developer
GUIツールでは、LEFT JOINの結果を表形式で確認でき、NULLの有無も簡単に把握できます。
CUI(コマンド)での確認方法
- mysql
- sqlcmd
- psql
- SQL*Plus
各データベースのコマンドラインツールからSQLを実行できます。
ログの確認方法
LEFT JOIN自体の実行内容はWindowsイベントログには記録されません。
SQLエラーが発生した場合は、データベースサーバーのエラーログや実行ログを確認します。
イベントビューアーの確認方法
通常は不要です。
データベースサービスの停止や接続エラーが疑われる場合のみ、Windowsイベントビューアーで関連ログを確認します。
PowerShellで確認できること
- データベースサービスの状態確認
- サーバーへの接続確認
- TCPポートの疎通確認
- サービスの起動状態確認
ショートカットキー
| キー | 用途 |
|---|---|
| F5 | SQL実行(SSMS) |
| Ctrl + A | 全文選択 |
| Ctrl + C | 実行停止 |
| Ctrl + F | 検索 |
初心者がやりがちなミス
- INNER JOINとの違いを理解していない
- NULLはエラーだと思ってしまう
- WHERE句でNULLを除外してしまう
- 結合キーを間違える
- 取得件数を確認しない
筆者の経験談
社内SEとして社員マスターを調査した際、INNER JOINでは問題が見つかりませんでした。しかし、LEFT JOINに変更すると部署情報が登録されていない社員が複数見つかり、マスターデータの登録漏れが原因だと判明しました。
この経験から、「データが存在しないことを確認したい場合はLEFT JOINを使う」という考え方が重要だと実感しました。
上司へ報告するポイント
- 実行したSQL
- 結合したテーブル
- NULLとなった件数
- 登録漏れの有無
- 取得件数
- 業務への影響範囲
エスカレーションするタイミング
- マスターデータの登録漏れが判明した場合
- 大量のNULLが発生している場合
- 本番データの修正が必要な場合
- システム全体に影響する可能性がある場合
新人が覚えておくべきポイント
- LEFT JOINは左側テーブルをすべて表示する。
- 一致しないデータはNULLになる。
- 登録漏れや未設定データの調査で活躍する。
- WHERE句の条件によってはLEFT JOINの結果が変わる。
- INNER JOINとの違いを理解して使い分ける。
関連するIT用語
- SQL(Structured Query Language)
- JOIN
- INNER JOIN
- RIGHT JOIN
- FULL OUTER JOIN
- NULL
- 主キー(Primary Key)
- 外部キー(Foreign Key)
よくある質問(FAQ)
LEFT JOINはどんなときに使いますか?
左側のテーブルにあるデータをすべて表示したい場合や、関連データが存在しないレコードを確認したい場合に使用します。
NULLはエラーですか?
いいえ。NULLは「値が存在しない」ことを表すデータベース上の値であり、エラーではありません。
LEFT JOINとINNER JOINはどちらを使えばよいですか?
一致したデータだけ取得したい場合はINNER JOIN、左側のデータをすべて表示したい場合はLEFT JOINを使用します。
まとめ
LEFT JOINは、左側のテーブルを基準にすべてのデータを取得し、一致する右側のデータがあれば結合するSQLの機能です。
特に、登録漏れや未設定データの調査、マスターデータの整合性確認など、IT業務では非常に活用されます。
まずは「左側は必ず表示される」「一致しない場合はNULLになる」という2つのポイントを理解し、INNER JOINとの違いを使い分けられるようになることが、SQLを習得する第一歩です。

コメント