🚲
"SELECT DISTINCT"で重複行をシンプルに
SELECT DISTINCT コマンド
SELECT DISTINCT は、重複したレコードは表示せず、ユニークなレコードのみを返してくれるコマンド。
例
SELECT name from sample;
| name |
|---|
| Taro |
| Jiro |
| Taro |
SELECT DISTINCT name from sample;
| name |
|---|
| Taro |
| Jiro |
実際に使用してみる
あるカラム(ex. student_id)において、値が重複しているレコードの student_id を知りたい。
そんな時には、、
SELECT DISTINCT student_id FROM students GROUP BY student_id having count(*) > 1;
解説
GROUP BY student_id having count(*) > 1;
student_id を持つレコードが二つ以上ある場合でグループを作成。
SELECT DISTINCT student_id FROM students GROUP BY ...
グループ化で重複している前提のあるレコードに、DISTINCT を適用することで SELECT したカラムの重複しているレコードをリスト化している。
ちなみに
通常は SELECT ALL
SELECT ALL は、重複した行も含めてすべての行を表示する。SELECT DISTINCT とは対照的なこの処理が SELECT のデフォルト動作。
Discussion