跳转到主要内容

any

首次引入于:v1.1.0 选择列中遇到的第一个值。
由于查询的执行顺序可以是任意的,因此此函数的结果是非确定性的。如果你需要任意但确定的结果,请使用函数 min 或 max。
默认情况下,该函数绝不会返回 NULL,也就是说会忽略输入列中的 NULL 值。 但是,如果该函数与 RESPECT NULLS 修饰符一起使用,则会返回读取到的第一个值,无论它是否为 NULL。 实现细节 在某些情况下,你可以依赖执行顺序。 这适用于 SELECT 来自使用了 ORDER BY 的子查询的情况。 SELECT 查询带有 GROUP BY 子句或至少一个聚合函数时,ClickHouse (不同于 MySQL) 要求 SELECTHAVINGORDER BY 子句中的所有表达式都必须基于键或聚合函数计算。 换句话说,从表中选出的每一列都必须要么用于键,要么包含在聚合函数中。 如果你想获得类似 MySQL 的行为,可以将其他列放入 any 聚合函数中。
函数的返回类型与输入类型相同,但会丢弃 LowCardinality。 这意味着如果没有输入行,它将返回该类型的默认值 (对于整数是 0,对于 Nullable() 列是 Null) 。 你可以使用 -OrNull 组合器来修改此行为。
语法
any(column)[ RESPECT NULLS]
别名: any_value, first_value 参数
  • column — 列名。Any
返回值 返回遇到的第一个值。 Any 示例 使用示例
Query
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;
Response
┌─any(city)─┬─anyRespectNulls(city)─┐
│ Amsterdam │ ᴺᵁᴸᴸ                  │
└───────────┴───────────────────────┘
最后修改于 2026年6月10日