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と組み合わせることで、より高度な集計を行うことができます。
練習問題
- productsテーブルから、重複する商品名を排除し、販売されている商品名を全て表示してください。
- ordersテーブルから、顧客IDと注文日が重複する注文があるか確認してください。
- customersテーブルから、国と都市の組み合わせがユニークな顧客数をカウントしてください。
コメント