ARRAY_UNION
功能
ARRAY_UNION
用于返回多个数组的并集,即合并所有数组中出现的元素,去重后组成一个新的数组。
语法
ARRAY_UNION(arr1, arr2, ..., arrN)
参数
arr1, arr2, ..., arrN
:任意数量的数组输入,类型均为ARRAY<T>
。- 所有数组的元素类型
T
必须一致,或可隐式转换为统一类型。 - 两个数组的元素类型
T
可以是数值类型、字符串类型、时间类型、IP类型。
- 所有数组的元素类型
返回值
- 返回一个 ARRAY
类型的新数组, 包含所有输入数组中的唯一元素,即去重后的并集。 - 如果某一个参数是
NULL
,返回NULL
(见示例)。
- 如果某一个参数是
使用说明
- 元素的去重依赖等值比较(= 运算符)。
- 数组结果中的
NULL
只会保留一个(见示例)。 - 输入的数组本身包含多个相同元素,结果中只保留一个(见示例)。
- 数组结果的顺序是不确定的。
示例
-
简单实例
SELECT ARRAY_UNION(ARRAY('hello', 'world'), ARRAY('hello', 'world'));
+---------------------------------------------------------------+
| ARRAY_UNION(ARRAY('hello', 'world'), ARRAY('hello', 'world')) |
+---------------------------------------------------------------+
| ["world", "hello"] |
+---------------------------------------------------------------+
SELECT ARRAY_UNION(ARRAY(1, 2, 3), ARRAY(3, 5, 6));
+---------------------------------------------+
| ARRAY_UNION(ARRAY(1, 2, 3), ARRAY(3, 5, 6)) |
+---------------------------------------------+
| [1, 5, 2, 6, 3] |
+---------------------------------------------+ -
输入的数组是
NULL
, 返回NULL
SELECT ARRAY_UNION(ARRAY('hello', 'world'), ARRAY('hello', 'world'), NULL);
+---------------------------------------------------------------------+
| ARRAY_UNION(ARRAY('hello', 'world'), ARRAY('hello', 'world'), NULL) |
+---------------------------------------------------------------------+
| NULL |
+---------------------------------------------------------------------+ -
输入的数组里面包含
NULL
, 输出的数组里面仅包含一个NULL
SELECT ARRAY_UNION(ARRAY('hello', 'world'), ARRAY('hello', NULL));
+------------------------------------------------------------+
| ARRAY_UNION(ARRAY('hello', 'world'), ARRAY('hello', NULL)) |
+------------------------------------------------------------+
| [null, "world", "hello"] |
+------------------------------------------------------------+
SELECT ARRAY_UNION(ARRAY(NULL, 'world'), ARRAY('hello', NULL));
+---------------------------------------------------------+
| ARRAY_UNION(ARRAY(NULL, 'world'), ARRAY('hello', NULL)) |
+---------------------------------------------------------+
| [null, "world", "hello"] |
+---------------------------------------------------------+ -
数组本身包含重复元素, 只会返回一个
SELECT ARRAY_UNION(ARRAY('hello', 'world', 'hello'), ARRAY('hello', NULL));
+------------------------------------------------------------+
| ARRAY_UNION(ARRAY('hello', 'world'), ARRAY('hello', NULL)) |
+------------------------------------------------------------+
| [null, "world", "hello"] |
+------------------------------------------------------------+