- MySQL
-
2025-12-17
MySQLで複数テーブルを結合する際、絞り込み条件をJOIN句(ON句)に書くべきか、WHERE句に書くべきかで迷った経験はないでしょうか。
本記事では、INNER JOIN と OUTER JOIN(LEFT JOIN)それぞれの場合について、意味の違い・結果の違い・設計上の考え方を整理し、実務で迷わないための指針をまとめます。
前提となるサンプル構造
以下のようなテーブルを例に説明します。
users - id - name orders - id - user_id - status
「ユーザーと注文を結合し、特定の条件で絞り込む」という典型的なケースです。
INNER JOIN の場合
JOIN句に条件を書く場合
SELECT * FROM users u INNER JOIN orders o ON u.id = o.user_id AND o.status = 'paid';
WHERE句に条件を書く場合
SELECT * FROM users u INNER JOIN orders o ON u.id = o.user_id WHERE o.status = 'paid';
結果は同じ?
はい、INNER JOINの場合は結果は同じになります。
INNER JOINは「結合条件を満たさない行を捨てる」ため、ON句に書いてもWHERE句に書いても、論理的な結果は一致します。
では、どちらが良いのか?
- 結合条件 → ON句
- 検索・絞り込み条件 → WHERE句
という役割分担を意識すると、SQLの可読性が向上します。




