跳到主要内容
版本: 最新版本-3.5

array_unique_agg

将 ARRAY 列中的不同值(包括 NULL)聚合到一个数组中(从多行到一行)。

该函数从 v3.2 版本开始支持。

语法

ARRAY_UNIQUE_AGG(col)

参数

  • col:要聚合其值的列。 支持的数据类型为 ARRAY。

返回值

返回 ARRAY 类型的值。

使用说明

  • 数组中元素的顺序是随机的。
  • 返回的数组中元素的数据类型与输入列中元素的数据类型相同。
  • 如果没有匹配的值,则返回 NULL

示例

以下面的数据表为例

mysql > select * from array_unique_agg_example;
+------+--------------+
| a | b |
+------+--------------+
| 2 | [1,null,2,4] |
| 2 | [1,null,3] |
| 1 | [1,1,2,3] |
| 1 | [2,3,4] |
+------+--------------+

示例 1:对列 a 中的值进行分组,并将列 b 中的不同值聚合到一个数组中。

mysql > select a, array_unique_agg(b) from array_unique_agg_example group by a;
+------+---------------------+
| a | array_unique_agg(b) |
+------+---------------------+
| 1 | [4,1,2,3] |
| 2 | [4,1,2,3,null] |
+------+---------------------+

示例 2:使用 WHERE 子句聚合列 b 中的值。 如果没有数据满足过滤条件,则返回 NULL 值。

mysql > select array_unique_agg(b) from array_unique_agg_example where a < 0;
+---------------------+
| array_unique_agg(b) |
+---------------------+
| NULL |
+---------------------+

关键词

ARRAY_UNIQUE_AGG, ARRAY