Query Go
両方に存在する行だけ結合 - INNER JOIN の使い方・オプション・サンプル

両方に存在する行だけ結合 - INNER JOIN

両側のテーブルに一致する行だけを返す結合。最も基本的な結合方法

概念図

INNER JOIN diagram

構文

sql
SELECTFROM A INNER JOIN B ON A.key = B.key

サンプル

users と orders を id で結合し、注文を持つユーザーだけを取得する

sql
SELECT u.name, o.amount
FROM users u
INNER JOIN orders o ON o.user_id = u.id;

INNER JOIN とは

INNER JOIN は 両側のテーブルに一致する行だけを返す結合です。ベン図でいえば 2 つの円が重なる中央の部分にあたります。

マッチしない行は左右どちらも結果に含まれません。注文を持たないユーザーや、ユーザーが見つからない注文は除外されます。

実行イメージ

各行に対して結合キーで相手テーブルを探し、見つかった組み合わせを返します。インデックスがない場合はネステッドループや HASH JOIN になります。

よくあるミス

  • NULL を含む列で結合: NULL は等値比較で一致しないため、意図せず行が消える
  • 結合条件の付け忘れ: ON 句を WHERE に書き忘れるとデカルト積になる

関連トピック