DISTINCT Оператор
Если указан 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
: