🚲

"SELECT DISTINCT"で重複行をシンプルに

2021/06/28に公開

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