跳转到主内容
跳转到主内容

any

any

引入版本:v1.1

选择列中首次遇到的值。

注意

由于查询可以以任意顺序执行,此函数的结果是非确定性的。如果您需要任意但确定性的结果,请使用函数 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

示例

用法示例

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 │ ᴺᵁᴸᴸ                  │
└───────────┴───────────────────────┘