JOIN の使い方

表をつなぐ(内部結合)

書き方

FROM 表 a JOIN 表 b ON a.列 = b.列

ON の条件に合う組み合わせだけを残します。INNER JOIN と同じ。同じ名前の列は 別名.列 で区別します。

よく使うオプション

オプション意味
JOIN … ON 条件条件に合う組み合わせだけを残す(INNER JOIN と同じ)
表 別名表に短い名前をつける(e.name のように使う)
USING (列)両方の表で同じ名前の列でつなぐ

例

SELECT e.name, d.name AS dept
FROM employees e
JOIN departments d ON d.id = e.dept_id; name | dept
------+------
 佐藤 | 営業
 鈴木 | 開発
(2 rows)

社員に部署の名前をつけて出します。社員の dept_id と部署の id が同じ行どうしをつなぎます。

SELECT c.name, o.total FROM orders o JOIN customers c ON c.id = o.customer_id WHERE o.total >= 10000;

1 万円以上の注文に、客の名前をつけて出します。つないだ後に WHERE で絞れます。

SELECT e.name, d.name, o.id
FROM employees e
JOIN departments d ON d.id = e.dept_id
JOIN orders o ON o.customer_id = e.id;

JOIN を続けて書くと、3 つ以上の表もつなげます。

よくある間違い・注意

  • 相手の表に合う行が無い行は、結果から消えます。消したくないときは LEFT JOIN を使います。
  • ON の条件を書き間違えると、組み合わせが増えて行数がふくれます。つないだ後の件数を COUNT(*) で確かめると安心です。
  • 両方の表に同じ名前の列(name など)があるときは、e.name のように表の名前か別名を付けます。

実際に打って練習する

SQL コースの Lv26「表をつなぐ JOIN」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

Lv1〜3 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。

SQL 構文一覧(使い方と例)へ戻る