Ключевое слово DISTINCT в PostgreSQL
В PostgreSQL ключевое слово DISTINCT используется вместе с оператором SELECT для удаления дублирующихся записей и получения только уникальных записей.
При работе с данными могут возникать ситуации, когда таблица содержит несколько дублирующихся записей. При извлечении таких записей ключевое слово DISTINCT становится особенно значимым, поскольку оно извлекает только уникальные записи, а не дублирующиеся.
Синтаксис
Базовый синтаксис ключевого слова DISTINCT для удаления дублирующихся записей выглядит следующим образом:
SELECT DISTINCT column1, column2,.....columnN FROM table_name WHERE [condition]
Пример
Создайте таблицу COMPANY (Скачать SQL-файл COMPANY), содержимое данных следующее:
exampledb# 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)
Давайте вставим две записи:
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)
Далее найдем все значения NAME в таблице COMPANY:
exampledb=# SELECT name FROM COMPANY;
Результат следующий:
name ------- Paul Allen Teddy Mark David Kim James Paul Allen (9 rows)
Теперь давайте используем предложение DISTINCT в операторе SELECT:
exampledb=# SELECT DISTINCT name FROM COMPANY;
Результат следующий:
name ------- Teddy Paul Mark David Allen Kim James (7 rows)
Из результатов видно, что дублирующиеся данные были отфильтрованы.
Другие расширения