【发布时间】:2023-02-24 00:28:21
【问题描述】:
select array_distinct(concat(array("sql", "python"), array("sql","scala")))
我得到的输出是正确的。
["sql", "python", "scala"]
concat 和 array_distinct 会保持顺序吗?或者我将如何使用 sql 实现相同的目的
【问题讨论】:
select array_distinct(concat(array("sql", "python"), array("sql","scala")))
我得到的输出是正确的。
["sql", "python", "scala"]
concat 和 array_distinct 会保持顺序吗?或者我将如何使用 sql 实现相同的目的
【问题讨论】:
SQL 中的 concat 函数将两个或多个数组连接成一个数组。串联数组中元素的顺序由输入数组的顺序决定。
array_distinct 函数返回一个数组,其中包含输入数组的不同元素。不保证输出数组中元素的顺序与输入数组中元素的顺序相同。
在您的示例中,串联数组中元素的顺序是 ["sql"、"python"、"sql"、"scala"]。应用 array_distinct 后,删除了重复元素“sql”,结果是 ["sql", "python", "scala"]。
如果要保持数组中元素的顺序并删除重复项,可以使用以下查询:
SELECT DISTINCT column_value
FROM UNNEST(array['sql', 'python', 'sql', 'scala']) AS t(column_value)
此查询使用 UNNEST 函数创建具有单列 column_value 的表,然后应用 DISTINCT 运算符删除重复项。结果输出是 ["sql", "python", "scala"]。
【讨论】: