跳到主要内容
跳到主要内容

any

选择列中首次遇到的值。

注意

由于查询可以以任意顺序执行,此函数的结果是非确定性的。 如果您需要任意但确定性的结果,请使用函数 minmax

默认情况下,该函数从不返回 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,对于 Nullable() 列是 Null)。 可以使用 -OrNull 组合器 来修改这种行为。

实现细节

在某些情况下,可以依赖于执行顺序。 这适用于 SELECT 来自包含 ORDER BY 的子查询的情况。

SELECT 查询带有 GROUP BY 子句或至少一个聚合函数时,ClickHouse(与 MySQL 不同)要求 SELECTHAVINGORDER 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 │ ᴺᵁᴸᴸ                  │
└───────────┴───────────────────────┘