any
NULL
値を無視し、カラムの最初に出現する値を選択します。
構文
any(column) [RESPECT NULLS]
別名: any_value
, first_value
。
パラメータ
column
: カラム名。
戻り値
Note
この関数名の後に RESPECT NULLS
修飾子を使用することができます。この修飾子を使用すると、関数は NULL
かどうかに関係なく、渡された最初の値を選択します。
Note
関数の戻り値の型は、入力と同じですが、LowCardinality は無視されます。つまり、入力として行がない場合、その型のデフォルト値(整数の場合は0、Nullable() カラムの場合は Null)を返します。この動作を変更するためには -OrNull
コンビネータ を使用することができます。
実装の詳細
いくつかのケースでは、実行順序に依存することができます。これは、ORDER BY
を使用したサブクエリから SELECT
が来る場合に適用されます。
SELECT
クエリが GROUP BY
句または少なくとも1つの集約関数を持つ場合、ClickHouse は(MySQL とは対照的に) SELECT
、HAVING
、および ORDER 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 │
└───────────┘