🗄️SQL

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 を使います。