メインコンテンツまでスキップ
バージョン: 3.1

any_value

説明

各集約グループから任意の行を取得します。この関数を使用して、GROUP BY句を含むクエリを最適化できます。

構文

ANY_VALUE(expr)

パラメータ

expr: 集約される式です。v3.2以降、exprはARRAY、MAP、およびSTRUCTに評価できます。

戻り値

各集約グループから任意の行を返します。戻り値は非決定的です。

テーブルt0を作成し、このテーブルにデータを挿入します。

CREATE TABLE t0(
a INT,
b BIGINT,
c SMALLINT,
d ARRAY<INT>,
e JSON
)
DUPLICATE KEY(a)
DISTRIBUTED BY HASH(a);

INSERT INTO t0 VALUES
(1, 1, 1, [2,3,4],parse_json('{"a":1, "b":true}')),
(1, 2, 1, [2,3,5],parse_json('{"a":2, "b":true}')),
(2, 1, 1, [2,3,6],parse_json('{"a":3, "b":true}')),
(2, 2, 2, [2,4,5],parse_json('{"a":4, "b":false}')),
(3, 1, 1, [3,3,5],parse_json('{"a":5, "b":false}'));
mysql> select * from t0 order by a;
+------+------+------+---------+----------------------+
| a | b | c | d | e |
+------+------+------+---------+----------------------+
| 1 | 1 | 1 | [2,3,4] | {"a": 1, "b": true} |
| 1 | 2 | 1 | [2,3,5] | {"a": 2, "b": true} |
| 2 | 1 | 1 | [2,3,6] | {"a": 3, "b": true} |
| 2 | 2 | 2 | [2,4,5] | {"a": 4, "b": false} |
| 3 | 1 | 1 | [3,3,5] | {"a": 5, "b": false} |
+------+------+------+---------+----------------------+
5 rows in set (0.01 sec)

any_valueを使用してデータをクエリします。a = 1およびa = 2の場合、bに対して任意の行が返されます。

mysql> select a,any_value(b),sum(c) from t0 group by a;
+------+----------------+----------+
| a | any_value(`b`) | sum(`c`) |
+------+----------------+----------+
| 1 | 1 | 2 |
| 2 | 1 | 3 |
| 3 | 1 | 1 |
+------+----------------+----------+
3 rows in set (0.01 sec)