英語607877 views
高校生物549842 views
中学社会667106 views
MathPython491378 views
ヒストリア284143 views
いろは2986023 views
教育148875 views
雑学1472593 views
中学英語808712 views
中学数学621382 views
Help
Tools

English

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;

結果は次のようになります。

nameproduct
田中りんご
田中みかん
鈴木バナナ

佐藤さんは 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 でしょう。