SELECT DISTINCT, в результате запроса останутся только уникальные строки. Иными словами, из каждого набора полностью совпадающих строк в результате останется только одна строка.
Можно указать список столбцов, значения в которых должны быть уникальными: SELECT DISTINCT ON (column1, column2,...). Если столбцы не указаны, учитываются все.
Рассмотрим таблицу:
DISTINCT без указания столбцов:
DISTINCT с указанными столбцами:
DISTINCT и ORDER BY
DISTINCT и ORDER BY для разных столбцов в одном запросе. Предложение DISTINCT выполняется до предложения ORDER BY.
Рассмотрим таблицу:
2, 4 была отброшена до сортировки.
Учитывайте эту особенность реализации при составлении запросов.
Обработка NULL
DISTINCT работает с NULL так, как будто NULL — это конкретное значение и NULL==NULL. Иными словами, в результатах DISTINCT разные комбинации с NULL встречаются только один раз. Это отличается от обработки NULL в большинстве других случаев.
Альтернативы
SELECT, не используя при этом агрегатные функции. Однако по сравнению с подходом GROUP BY есть несколько отличий: