構文例
SELECT order_items.id, orders.order_date, order_items.price
FROM order_items
LEFT OUTER JOIN orders
ON order_items.order_id = orders.id;
JOIN は、複数のテーブル間にある関連カラムに基づいて行を結合します。
結合の視覚化
SELECT * FROM `A` INNER JOIN `B`
┌────────┐
│ A ┌───┼────┐
│ │ ∩ │ │
└────┼───┘ B │
└────────┘
| 結合タイプ | 含まれるデータ | 説明 |
|---|---|---|
INNER JOIN |
∩ |
両方のテーブルで値が一致するレコードを返す |
LEFT OUTER JOIN |
A + ∩ |
テーブルAのすべてのレコードと、テーブルBの一致するレコードを返す |
RIGHT OUTER JOIN |
∩ + B |
テーブルBのすべてのレコードと、テーブルAの一致するレコードを返す |
FULL OUTER JOIN |
A + ∩ + B |
左右いずれかのテーブルに一致があるすべてのレコードを返す |
JOIN のバリエーションとフィルタリング
積集合を除外した Left Join
SELECT * FROM A
LEFT JOIN B ON A.key = B.key
WHERE B.key IS NULL;
積集合を除外した Right Join
SELECT * FROM A
RIGHT JOIN B ON A.key = B.key
WHERE A.key IS NULL;
積集合を除外した Full Outer Join
SELECT * FROM A
FULL OUTER JOIN B ON A.key = B.key
WHERE A.key IS NULL OR B.key IS NULL;