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

SQLのJOIN図解:2つのテーブルを重ねたベン図でINNER JOIN(重なり)とLEFT JOIN(左側全体)を色分けして示す
INNER JOINとLEFT JOINの違いを視覚で解説 — テーブル結合の結果を一目で理解

SQLで複数のテーブルを組み合わせてデータを取得する際に欠かせないのが JOIN です。JOINを理解することで、テーブルを横断した柔軟なデータ分析が可能になります。この記事では、よく使われる INNER JOINLEFT JOIN を中心に、その違いと使いどころを徹底解説します。

JOINとは?

JOIN とは、複数のテーブルを結合し、条件に合致するデータを1つの結果セットとして取り出す機能です。
たとえば、「商品テーブル」と「カテゴリーテーブル」をJOINすれば、商品名とカテゴリー名を同時に表示できます。

SQLでは主に以下のJOINが用いられます:

  • INNER JOIN
  • LEFT JOIN(LEFT OUTER JOIN)
  • RIGHT JOIN(RIGHT OUTER JOIN)
  • FULL JOIN(FULL OUTER JOIN)

その中でも最も使われるのが INNER JOINLEFT 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 JOINLEFT 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句の使い方 を読んで、集計結果をさらに絞り込む方法もチェックしてみてください。