SQLで重複行を除いて取得する方法(DISTINCT)
取得結果から重複を消すには DISTINCT を使います。
1列の重複を消す
SELECT DISTINCT category
FROM products;
複数列の組み合わせで重複を消す
SELECT DISTINCT category, maker
FROM products;
-- category と maker のペアが同じ行は1つにまとまる
DISTINCT と GROUP BY の違い
- DISTINCT:重複を消すだけ。
- GROUP BY:グループ化して集計(件数・合計)もできる。
単に重複を消したいだけなら DISTINCT、件数や合計も欲しいなら GROUP BY を使い分けます。
よくある質問
DISTINCTは特定の1列だけに効かせられる?
いいえ。DISTINCT は SELECT した全列の組み合わせに対して効きます。1列だけ重複排除したいならその列だけを選択します。
DISTINCTとGROUP BYはどちらが速い?
多くのDBで同等ですが、集計が不要なら DISTINCT が意図を明確にできます。集計が必要なら GROUP BY を使います。