に最終更新
ARRAY_UNION
機能
ARRAY_UNION は複数の配列の和集合を返します。すべての要素を結合して重複を除き、新しい配列を返します。
構文
ARRAY_UNION(arr1, arr2, ..., arrN)
パラメータ
arr1, arr2, ..., arrN: 任意の個数の入力配列。すべてARRAY<T>型です。- すべての配列の要素型
Tは同じか、共通の型に暗黙的に変換できる必要があります。 - 要素型
Tには数値、文字列、日付時刻、IP、UUID を指定できます。
- すべての配列の要素型
戻り値
- 入力配列の重複しない要素をすべて含む、新しい
ARRAY<T>型の配列を返します。- いずれかの入力引数が
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', 'hello'), 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"] |
+------------------------------------------------------------+