Последнее обновление
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, возвращаетсяNULLSELECT ARRAY_UNION(ARRAY('hello', 'world'), ARRAY('hello', 'world'), NULL);
+---------------------------------------------------------------------+
| ARRAY_UNION(ARRAY('hello', 'world'), ARRAY('hello', 'world'), NULL) |
+---------------------------------------------------------------------+
| NULL |
+---------------------------------------------------------------------+ -
Если входные массивы содержат
NULL, результирующий массив будет содержать только одинNULLSELECT 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"] |
+------------------------------------------------------------+