メインコンテンツへスキップ
メインコンテンツへスキップ

any

列内で最初に見つかった値を選択します。

注記

クエリは任意の順序で実行される可能性があるため、この関数が返す結果は非決定的です。 どれでもよいが決定的な結果が必要な場合は、min または max 関数を使用してください。

デフォルトでは、この関数が NULL を返すことはなく、入力列内の NULL 値は無視されます。 ただし、RESPECT NULLS 修飾子とともにこの関数を使用した場合は、NULL かどうかに関係なく、読み取った最初の値を返します。

構文

any(column) [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 が取り除かれる点を除き、入力と同じです。 つまり、入力として 1 行もない場合、その型のデフォルト値(整数なら 0、Nullable() カラムなら Null)が返されます。 この挙動を変更するには、-OrNull combinator を使用できます。

実装の詳細

場合によっては、実行順序に依存することができます。 これは、ORDER BY を使用するサブクエリから SELECT されるケースに当てはまります。

SELECT クエリに GROUP BY 句、または少なくとも 1 つの集計関数が含まれている場合、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 │ ᴺᵁᴸᴸ                  │
└───────────┴───────────────────────┘