Categorias:

Funções de dados semiestruturados e estruturados (Matriz/objeto)

ARRAY_DISTINCT

Retorna uma nova ARRAY que contém somente os elementos distintos da ARRAY de entrada. A função exclui qualquer elemento duplicado presente no ARRAY de entrada.

A função não garante o retorno de elemento na ARRAY em uma ordem específica.

A função é NULL-safe, o que significa que ela trata NULLs como valores conhecidos ao identificar elementos duplicados.

Sintaxe

ARRAY_DISTINCT( <array> )
Copy

Argumentos

array

Uma matriz que possa conter elementos duplicados a serem removidos.

Retornos

Esta função retorna uma ARRAY que contém os elementos das matrizes de entrada sem elementos duplicados. Por exemplo, se o valor 'x' aparecer várias vezes na ARRAY de entrada, somente um elemento terá o valor 'x' na ARRAY retornada.

Se o argumento da entrada for NULL, a função retornará NULL.

A ordem dos valores dentro da matriz retornada não está especificada.

Notas de uso

  • Para elementos do tipo OBJECT, os objetos devem ser idênticos para serem considerados duplicados. Para obter mais detalhes, consulte Exemplos (neste tópico).

  • Ao identificar elementos duplicados, a função considera NULL como um valor conhecido (ou seja, NULL não é uma duplicata de qualquer outro valor X além de NULL).

Exemplos

O seguinte exemplo demonstra como a função retorna uma ARRAY sem os elementos duplicados A de NULL de uma ARRAY de entrada constante:

SELECT ARRAY_DISTINCT(['A', 'A', 'B', NULL, NULL]);

+---------------------------------------------+
| ARRAY_DISTINCT(['A', 'A', 'B', NULL, NULL]) |
|---------------------------------------------|
| [                                           |
|   "A",                                      |
|   "B",                                      |
|   undefined                                 |
| ]                                           |
+---------------------------------------------+
Copy

O exemplo a seguir demonstra como passar em NULL (em vez de uma ARRAY) retorna NULL:

SELECT ARRAY_DISTINCT(NULL);

+----------------------+
| ARRAY_DISTINCT(NULL) |
|----------------------|
| NULL                 |
+----------------------+
Copy

O exemplo a seguir demonstra como a função remove OBJECTs duplicados em uma ARRAY de entrada. O exemplo usa constantes de OBJECT e constantes de ARRAY para construir OBJECTs e ARRAY.

SELECT ARRAY_DISTINCT( [ {'a': 1, 'b': 2}, {'a': 1, 'b': 2}, {'a': 1, 'b': 3} ] );

+----------------------------------------------------------------------------+
| ARRAY_DISTINCT( [ {'A': 1, 'B': 2}, {'A': 1, 'B': 2}, {'A': 1, 'B': 3} ] ) |
|----------------------------------------------------------------------------|
| [                                                                          |
|   {                                                                        |
|     "a": 1,                                                                |
|     "b": 2                                                                 |
|   },                                                                       |
|   {                                                                        |
|     "a": 1,                                                                |
|     "b": 3                                                                 |
|   }                                                                        |
| ]                                                                          |
+----------------------------------------------------------------------------+
Copy

Como mostrado no exemplo, o último elemento não é considerada uma duplicata pois b tem um valor diferente (3, não 2).