PostgreSQL DISTINCT キーワード
PostgreSQL では、DISTINCT キーワードは SELECT 文と一緒に使用され、重複したレコードを除去して、一意のレコードだけを取得します。
通常データを操作するとき、テーブル内に複数の重複レコードが存在することがあります。そのようなレコードを取得する場合、DISTINCT キーワードは特に意味を持ちます。重複したレコードを取得するのではなく、一意のレコードだけを一度だけ取得します。
構文
重複レコードを除去するための DISTINCT キーワードの基本構文は次のとおりです:
SELECT DISTINCT column1, column2,.....columnN FROM table_name WHERE [condition]
実例
COMPANY テーブルを作成します(COMPANY SQL ファイルをダウンロード)。データ内容は以下のとおりです:
サンプルdb# select * from COMPANY; id | name | age | address | salary ----+-------+-----+-----------+-------- 1 | Paul | 32 | California| 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall| 45000 7 | James | 24 | Houston | 10000 (7 rows)
2件のデータを挿入しましょう:
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (8, 'Paul', 32, 'California', 20000.00 ); INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) VALUES (9, 'Allen', 25, 'Texas', 15000.00 );
現在のデータは以下のとおりです:
id | name | age | address | salary ----+-------+-----+------------+-------- 1 | Paul | 32 | California | 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall | 45000 7 | James | 24 | Houston | 10000 8 | Paul | 32 | California | 20000 9 | Allen | 25 | Texas | 15000 (9 rows)
次に、COMPANY テーブル内のすべての NAME を取得します:
サンプルdb=# SELECT name FROM COMPANY;
得られる結果は以下のとおりです:
name ------- Paul Allen Teddy Mark David Kim James Paul Allen (9 rows)
次に、SELECT 文で DISTINCT 句を使用します:
サンプルdb=# SELECT DISTINCT name FROM COMPANY;
得られる結果は以下のとおりです:
name ------- Teddy Paul Mark David Allen Kim James (7 rows)
結果からわかるように、重複データはすでにフィルタリングされています。
その他の拡張