ARRAY_DISTINCT()

All functions > ARRAY > ARRAY_DISTINCT()

Returns an array with distinct elements, sorted in ascending order.

Signatures

Returns: An array with distinct elements sorted in ascending order

ARRAY_DISTINCT(array: ARRAY<T>) → ARRAY<T>
sql
ParameterTypeRequiredDescription
arrayARRAY<T>YesThe input array containing possible duplicate elements

Notes

  • Removes all duplicate elements and sorts the result
  • Returns sorted distinct elements
  • Eliminates all duplicates using set semantics
  • Handles NULL values consistently
  • Empty arrays remain empty
  • Supports ARRAY<ROW> and ARRAY<ARRAY<T>>: equality is structural (exact field names, types, and values)

Aliases

  • ARRAY_UNIQUE

See also

Examples

FeatureQL
SELECT
    -- Remove duplicate numbers
    f1 := ARRAY_DISTINCT(ARRAY(1, 2, 2, 3, 3, 3)),
    -- Remove duplicate strings
    f2 := ARRAY_DISTINCT(ARRAY('A', 'B', 'A', 'C', 'B')),
    -- Real-world string example
    f3 := ARRAY_DISTINCT(ARRAY('apple', 'banana', 'apple')),
    -- No duplicates to remove
    f4 := ARRAY_DISTINCT(ARRAY(1, 2, 3)),
    -- All elements the same
    f5 := ARRAY_DISTINCT(ARRAY(5, 5, 5)),
    -- Empty array
    f6 := ARRAY_DISTINCT(ARRAY()::BIGINT[]),
    -- Distinct rows from ZIP (DuckDB: unnest + DISTINCT + list rebuild)
    f7 := ARRAY_DISTINCT(ZIP(ARRAY(1, 1, 2) AS x, ARRAY(10, 10, 20) AS y))
;
Result
f1 ARRAYf2 ARRAYf3 ARRAYf4 ARRAYf5 ARRAYf6 ARRAYf7 VARCHAR
[1, 2, 3][A, B, C][apple, banana][1, 2, 3][5][][{x: 1, y: 10}, {x: 2, y: 20}]

Last update at: 2026/06/20 10:08:10