SQL基礎 レッスン5
DISTINCT
重複する行を除外してユニークな値だけを取得する方法を学びます。
DISTINCTとは
DISTINCTキーワードを使うと、結果セットから重複する行を取り除いてユニークな値だけを返します。 例えば、商品テーブルに同じカテゴリが複数あるとき、DISTINCTを使えばカテゴリ一覧を重複なしで取得できます。
SELECT DISTINCT カラム名— 重複を除いた値を返す- 複数カラム指定時は、カラムの組み合わせが重複しないものを返す
- NULL値も1行として扱われる(複数のNULLは1つにまとめられる)
DISTINCTの活用場面
DISTINCTはデータの種類や一覧を確認したいときに便利です。 ただし、大量データに対してDISTINCTを使うとパフォーマンスが低下することがあるため、 集約関数(GROUP BY)で代替できる場合はそちらを検討しましょう。
- カテゴリ一覧、都道府県一覧など種類を確認するとき
- 重複データのチェック・クレンジングの確認
COUNT(DISTINCT カラム名)— ユニーク件数のカウント
例1: 重複するカテゴリを除外
テーブル定義
CREATE TABLE products (id INTEGER, name TEXT, price INTEGER, category TEXT); INSERT INTO products VALUES (1, 'りんご', 150, '果物'); INSERT INTO products VALUES (2, 'バナナ', 80, '果物'); INSERT INTO products VALUES (3, '牛乳', 200, '乳製品'); INSERT INTO products VALUES (4, 'チーズ', 350, '乳製品'); INSERT INTO products VALUES (5, 'みかん', 100, '果物'); INSERT INTO products VALUES (6, 'バター', 300, '乳製品');
SQLエディタ
例2: 複数カラムの組み合わせで重複除外
テーブル定義
CREATE TABLE employees (id INTEGER, name TEXT, department TEXT, job_title TEXT); INSERT INTO employees VALUES (1, '田中', '開発', 'エンジニア'); INSERT INTO employees VALUES (2, '鈴木', '開発', 'エンジニア'); INSERT INTO employees VALUES (3, '佐藤', '開発', 'マネージャー'); INSERT INTO employees VALUES (4, '山田', '営業', '営業担当'); INSERT INTO employees VALUES (5, '高橋', '営業', 'マネージャー');
SQLエディタ
例3: DISTINCTなしとの比較
テーブル定義
CREATE TABLE employees (id INTEGER, name TEXT, department TEXT); INSERT INTO employees VALUES (1, '田中', '開発'); INSERT INTO employees VALUES (2, '鈴木', '開発'); INSERT INTO employees VALUES (3, '佐藤', '営業'); INSERT INTO employees VALUES (4, '山田', '営業'); INSERT INTO employees VALUES (5, '高橋', '人事');
SQLエディタ