跳至主要内容

any

选择列中遇到的第一个值,忽略任何 NULL 值。

语法

any(column) [RESPECT NULLS]

别名:any_valuefirst_value.

参数

  • column:列名。

返回值

注意

支持函数名称后的 RESPECT NULLS 修饰符。使用此修饰符将确保该函数选择传递的第一个值,无论它是 NULL 还是其他值。

注意

函数的返回类型与输入相同,但 LowCardinality 会被丢弃。这意味着如果输入没有行,它将返回该类型的默认值(整数为 0,或 Nullable() 列为 Null)。您可以使用 -OrNull 组合器 ) 来修改此行为。

危险

查询可以按任何顺序执行,甚至每次执行时顺序都不同,因此此函数的结果是不确定的。要获得确定的结果,您可以使用 minmax 函数而不是 any

实现细节

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

SELECT 查询具有 GROUP BY 子句或至少一个聚合函数时,ClickHouse(与 MySQL 不同)要求 SELECTHAVINGORDER BY 子句中的所有表达式都必须从键或聚合函数计算。换句话说,从表中选择的每个列都必须在键中使用或在聚合函数内使用。要获得类似于 MySQL 中的行为,您可以将其他列放在 any 聚合函数中。

示例

查询

CREATE TABLE any_nulls (city Nullable(String)) ENGINE=Log;

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

SELECT any(city) FROM any_nulls;
┌─any(city)─┐
│ Amsterdam │
└───────────┘