両方に存在する行だけ結合 - INNER JOIN
両側のテーブルに一致する行だけを返す結合。最も基本的な結合方法
概念図
構文
sql
SELECT 列 FROM 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 に書き忘れるとデカルト積になる
