DISTINCT の使い方
重複した行を 1 つにする
書き方
SELECT DISTINCT 列 FROM 表;
選んだ列の組み合わせが同じ行を 1 行にまとめます。
よく使うオプション
| オプション | 意味 |
|---|---|
DISTINCT 列 | その列の値が同じ行を 1 行にまとめる |
DISTINCT 列, 列 | 書いた列の組み合わせが同じ行を 1 行にまとめる |
COUNT(DISTINCT 列) | 重ならない値がいくつあるか数える |
例
SELECT DISTINCT city FROM customers; city
------
大阪
東京
福岡
(3 rows)客の住む町を、重なりなしで出します。同じ町の客が何人いても 1 行です。
SELECT DISTINCT dept_id, manager_id FROM employees;
部署と上司の組み合わせを、重なりなしで出します。どちらか一方でも違えば別の行になります。
SELECT COUNT(DISTINCT customer_id) FROM orders; count
-------
42
(1 row)一度でも注文した客が何人いるかを数えます。同じ客の注文が何件あっても 1 人です。
よくある間違い・注意
- DISTINCT は SELECT のすぐ後に 1 回だけ書き、選んだすべての列に効きます。1 つの列だけに効くわけではありません。
- NULL どうしは同じものとしてまとめられ、1 行になります。
実際に打って練習する
SQL コースの Lv6「重複をなくす DISTINCT」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
Lv1〜3 は、登録不要・無料で遊べます(それより先はブロンズ以上のプランで遊べます)。