頻出高 ⏱ 6分★★★★★

内部結合(INNER JOIN)

行数の考え方・複合キー・ON vs WHERE の完全理解

両テーブルで結合キーが一致する行だけを返す結合。最も多用される JOIN 種類で、JOIN のみで同義。

「一致しない行は結果から消える」が INNER JOIN の最大の特性。外部キー制約がない場合、孤立行が静かに除外される点に注意。
INNER JOIN = 積集合(共通部分のみ)
受注
一致
顧客
中央の重なりだけが
INNER JOIN の結果
SELECT o.受注ID, c.顧客名, o.金額
FROM   受注 o
INNER JOIN 顧客 c ON o.顧客ID = c.顧客ID;
一致しない行は除外される
受注顧客INNER JOIN 結果
受注ID顧客ID顧客ID顧客名受注ID顧客名金額
001C01C01山田001山田5,000
002C99C02鈴木002 は除外(C99 が顧客に存在しない)
-- 複合外部キーでの結合
SELECT d.受注ID, p.商品名, p.単価
FROM   受注明細 d
JOIN   商品価格 p
  ON  d.商品ID = p.商品ID
  AND d.受注日 BETWEEN p.適用開始日 AND p.適用終了日;

受注日に有効な価格だけを紐付ける典型パターン(有効期間型の設計)。

SELECT
  o.受注ID,
  c.顧客名,
  e.氏名    AS 担当者名,
  o.金額
FROM   受注   o
JOIN   顧客   c ON o.顧客ID   = c.顧客ID
JOIN   社員   e ON o.担当者ID = e.社員ID
WHERE  o.金額 >= 10000;
条件の置き場所と意味の違い
場所目的
ON 句結合の定義(どの行を対応させるか)ON o.顧客ID = c.顧客ID
WHERE 句結合後の絞り込みWHERE o.金額 >= 10000
INNER JOIN では ON と WHERE どちらに書いても結果は同じ。ただし OUTER JOIN では結果が変わる(後のページで解説)。明確に書き分ける習慣が重要。

📝 理解度チェック

INNER JOIN で結合キーが一致しない行はどうなるか?
1 対多の関連(1 つの受注に複数の受注明細)を INNER JOIN した結果の行数は?
INNER JOIN で ON 句に複数条件を指定するには?

読了ボタンを押すとトップページの進捗に反映されます