Перейти к основному содержанию
Перейти к основному содержанию

any

Выбирает первое встретившееся значение в столбце.

Примечание

Так как запрос может выполняться в произвольном порядке, результат этой функции является недетерминированным. Если вам нужен произвольный, но детерминированный результат, используйте функции min или max.

По умолчанию функция никогда не возвращает NULL, т.е. игнорирует значения NULL во входном столбце. Однако, если функция используется с модификатором RESPECT NULLS, она возвращает первое прочитанное значение, независимо от того, является оно NULL или нет.

Синтаксис

any(столбец) [RESPECT NULLS]

Псевдонимы any(column) (без RESPECT NULLS)

Псевдонимы для any(column) RESPECT NULLS

  • anyRespectNulls, any_respect_nulls
  • firstValueRespectNulls, first_value_respect_nulls
  • anyValueRespectNulls, any_value_respect_nulls

Параметры

  • column: имя столбца.

Возвращаемое значение

Первое встреченное значение.

Примечание

Тип возвращаемого значения функции совпадает с типом аргумента, за исключением LowCardinality, который отбрасывается. Это означает, что при отсутствии строк во входных данных функция вернёт значение по умолчанию для этого типа (0 для целых чисел или Null для столбца типа Nullable()). Вы можете использовать комбинатор -OrNull combinator, чтобы изменить это поведение.

Особенности реализации

В некоторых случаях можно полагаться на порядок выполнения. Это относится к ситуациям, когда SELECT берётся из подзапроса, использующего ORDER BY.

Когда запрос SELECT содержит предложение GROUP BY или хотя бы одну агрегатную функцию, ClickHouse (в отличие от MySQL) требует, чтобы все выражения в предложениях SELECT, HAVING и ORDER BY вычислялись из ключей или из агрегатных функций. Другими словами, каждый столбец, выбираемый из таблицы, должен использоваться либо в ключах, либо внутри агрегатных функций. Чтобы получить поведение, похожее на MySQL, вы можете обернуть остальные столбцы в агрегатную функцию any.

Пример

Запрос:

CREATE TABLE tab (city Nullable(String)) ENGINE=Memory;

INSERT INTO tab (city) VALUES (NULL), ('Amsterdam'), ('New York'), ('Tokyo'), ('Valencia'), (NULL);

SELECT any(city), anyRespectNulls(city) FROM tab;
┌─any(city)─┬─anyRespectNulls(city)─┐
│ Amsterdam │ ᴺᵁᴸᴸ                  │
└───────────┴───────────────────────┘