SQLで重複を排除!DISTINCTの使い方

この記事は約3分で読めます。
記事内に広告が含まれています。

DISTINCTとは?

SQLのDISTINCTは、重複するデータを排除し、一意なレコードのみを抽出するためのキーワードです。例えば、顧客リストから重複する顧客名を排除して、顧客の数を正確に数えたい場合などに利用します。

DISTINCTの基本的な使い方

SELECT DISTINCT カラム名
FROM テーブル名;
  • SELECT DISTINCT: 重複を排除して選択することを指定します。
  • カラム名: 重複を排除したいカラムを指定します。
  • テーブル名: データを抽出するテーブル名を指定します。

使用例

  • 顧客名の重複排除
SELECT DISTINCT customer_name FROM customers;

customersテーブルから、重複する顧客名を排除し、一意な顧客名の一覧を取得します。

  • 商品のカテゴリの重複排除
SELECT DISTINCT category FROM products;

productsテーブルから、重複する商品カテゴリを排除し、存在する全てのカテゴリの一覧を取得します。

複数のカラムに適用する場合

複数のカラムに対してDISTINCTを適用したい場合は、全てのカラム名をカンマで区切って指定します。

SELECT DISTINCT country, city
FROM customers;

このクエリでは、国と都市の組み合わせが重複しないように抽出されます。

注意点

  • パフォーマンス
    DISTINCTは、特に大量のデータに対して使用する場合、処理時間が長くなる可能性があります。
  • NULL値
    DISTINCTは、NULL値も異なる値として扱います。

DISTINCTの応用例

  • 重複する注文データの確認
    注文IDでDISTINCTを適用し、重複する注文があるか確認する。
  • ユニークな顧客数のカウント
    顧客IDでDISTINCTを適用し、顧客数をカウントする。
  • 重複するデータの削除
    DISTINCTの結果と比較して、重複データを削除する(DELETE文と組み合わせる)

GROUP BYとの違い

DISTINCTとGROUP BYは、どちらも重複データを扱う際に使用されることがあるため、混同しやすいですが、その働きは異なります。

  • DISTINCT: 指定したカラムの値が重複しないように、レコード全体を排除します。
  • GROUP BY: 指定したカラムの値でグループ化し、各グループに対して集計を行います。

まとめ

DISTINCTは、重複データを排除し、一意なデータを取り出す際に非常に便利な機能です。
GROUP BYとの違いを理解し、適切な場面で使い分けることで、より効率的なSQLクエリを作成することができます。

さらに詳しく学びたい方へ

  • COUNT(DISTINCT)
    DISTINCTとCOUNT関数を組み合わせることで、一意な値の数を数えることができます。
  • HAVING句
    GROUP BYと組み合わせることで、グループ化されたデータに対して条件を指定できます。
  • ウィンドウ関数
    DISTINCTと組み合わせることで、より高度な集計を行うことができます。

練習問題

  1. productsテーブルから、重複する商品名を排除し、販売されている商品名を全て表示してください。
  2. ordersテーブルから、顧客IDと注文日が重複する注文があるか確認してください。
  3. customersテーブルから、国と都市の組み合わせがユニークな顧客数をカウントしてください。

コメント

タイトルとURLをコピーしました