SQLのJOINを徹底解説|INNER JOIN・LEFT JOINの違いと使いどころ

SQLで複数のテーブルを組み合わせてデータを取得する際に欠かせないのが JOIN です。JOINを理解することで、テーブルを横断した柔軟なデータ分析が可能になります。この記事では、よく使われる INNER JOIN と LEFT JOIN を中心に、その違いと使いどころを徹底解説します。
Contents
JOINとは?
JOIN とは、複数のテーブルを結合し、条件に合致するデータを1つの結果セットとして取り出す機能です。
たとえば、「商品テーブル」と「カテゴリーテーブル」をJOINすれば、商品名とカテゴリー名を同時に表示できます。
SQLでは主に以下のJOINが用いられます:
- INNER JOIN
- LEFT JOIN(LEFT OUTER JOIN)
- RIGHT JOIN(RIGHT OUTER JOIN)
- FULL JOIN(FULL OUTER JOIN)
その中でも最も使われるのが INNER JOIN と LEFT JOIN です。
INNER JOINとは?
INNER JOIN は、両方のテーブルに共通するキーが存在する行だけを結果に含めるJOINです。
書き方
SELECT 商品.ProductName, カテゴリ.CategoryName
FROM 商品
INNER JOIN カテゴリ
ON 商品.CategoryID = カテゴリ.CategoryID;特徴
- 両方のテーブルに存在するデータのみ取得
- 一致しないデータは無視される
イメージ図
商品テーブル ∩ カテゴリテーブルつまり、「共通部分だけ欲しいとき」に使います。
LEFT JOINとは?
LEFT JOIN は、左側(FROM句で指定したテーブル)のデータをすべて残し、結合条件に一致する右側のデータを結合するJOINです。一致しない場合は NULL が入ります。
書き方
SELECT 商品.ProductName, カテゴリ.CategoryName
FROM 商品
LEFT JOIN カテゴリ
ON 商品.CategoryID = カテゴリ.CategoryID;特徴
- 左テーブルのデータは必ず出力
- 右テーブルに対応する行がなければ
NULL
イメージ図
商品テーブル(全件) + 一致するカテゴリ
一致しない場合 → カテゴリ列にNULL「基準となるテーブルの全データを保持したいとき」に使います。
INNER JOINとLEFT JOINの違い
| 項目 | INNER JOIN | LEFT JOIN |
|---|---|---|
| 取得されるデータ | 両方に存在するデータのみ | 左テーブルは必ず全件 |
| 欠けるデータの扱い | 無視される | NULLとして表示 |
| 主な用途 | 完全一致データの抽出 | 片方を基準に全件確認 |
たとえば「すべての商品を表示したいが、カテゴリが未設定の商品も確認したい」という場合は LEFT JOIN が有効です。
JOINを使い分ける場面
- INNER JOINを使うとき
- 顧客と注文を結合し、「注文をした顧客」だけを取りたいとき
- 商品と在庫を結合し、「在庫がある商品」だけを表示したいとき
- LEFT JOINを使うとき
- すべての顧客を表示しつつ、「注文していない顧客」をNULLで確認したいとき
- すべての商品を表示し、カテゴリ未設定の商品も一覧で確認したいとき
JOINを理解する前に押さえたい基礎
JOINを正しく使うためには、SQLの基本を理解しておくことが大切です。以下の記事も合わせて参考にしてみてください。
これらを押さえた上でJOINを学ぶと、理解が一段と深まります。
まとめ
- INNER JOIN は「共通部分だけ欲しい」場合に使う
- LEFT JOIN は「基準テーブルの全データを残したい」場合に使う
- JOINを使いこなすことで、複雑なデータ分析やレポート作成が可能になる
JOINはSQLの中でも頻繁に使う重要な機能です。実際に手を動かしながら、INNER JOINとLEFT JOINの違いを体感してみましょう。
👉 次は SQLのHAVING句の使い方 を読んで、集計結果をさらに絞り込む方法もチェックしてみてください。

