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