INNER JOIN で共通するデータを結合する
複数のテーブルを結合して、関連するデータをまとめて取得するには JOIN を使います。その中でも INNER JOIN は、両方のテーブルに存在するデータだけを取得します。
基本構文
SELECT カラム名 FROM テーブル1
INNER JOIN テーブル2 ON テーブル1.カラム = テーブル2.カラム;具体例
users テーブルと orders テーブルがあるとします。
-- users テーブル
-- id, name
-- 1, 田中
-- 2, 鈴木
-- 3, 佐藤
-- orders テーブル
-- id, user_id, product
-- 1, 1, りんご
-- 2, 1, みかん
-- 3, 2, バナナユーザー名と注文を一緒に取得するには、こう書きます。
SELECT users.name, orders.product
FROM users
INNER JOIN orders ON users.id = orders.user_id;結果は次のようになります。
| name | product |
|---|---|
| 田中 | りんご |
| 田中 | みかん |
| 鈴木 | バナナ |
佐藤さんは orders に注文がないので、結果に出てきません。これが INNER JOIN の特徴です。
INNER JOIN の動き
両方に存在するデータ
結果に含まれる
片方にしかないデータ
結果に含まれない
INNER JOIN は「両方のテーブルで条件が一致する行だけ」を返します。
JOIN の省略形
INNER JOIN は単に JOIN と書いても同じ意味です。
-- どちらも同じ
SELECT * FROM users INNER JOIN orders ON users.id = orders.user_id;
SELECT * FROM users JOIN orders ON users.id = orders.user_id;テーブルに別名をつける
テーブル名が長いと読みにくくなるので、別名(エイリアス)をつけることが多いです。
SELECT u.name, o.product
FROM users u
INNER JOIN orders o ON u.id = o.user_id;users u で users テーブルに u という別名をつけています。
WHERE と組み合わせる
JOIN した結果に WHERE で条件をつけることもできます。
SELECT u.name, o.product
FROM users u
INNER JOIN orders o ON u.id = o.user_id
WHERE o.product = 'りんご';この例では、りんごを注文したユーザーだけが取得されます。
INNER JOIN はテーブル結合の基本です。次に覚えるべきは、片方にしかないデータも取得できる LEFT JOIN でしょう。












