sql - UNNEST 不返回空数组的行
问题描述
我unnest
在 Athena 查询中使用了多个扁平化数组。当数组有一些记录时,它会返回正确的结果。但是当第二个数组为空时,它不返回任何记录。有人可以让我知道如何在单个查询中取消嵌套多个数组吗?
以下查询返回空行。
WITH example AS (
SELECT devop, devs
FROM
UNNEST(ARRAY['Sharon', 'John', 'Bob', 'Sally']) AS t(devop),
UNNEST(ARRAY[]) AS t(devs)
)
select array_join(array_agg(distinct example.devop),';'),array_join(array_agg(distinct example.devs),';') from example
以下查询返回正确的结果。
WITH example AS (
SELECT devop, devs
FROM
UNNEST(ARRAY['Sharon', 'John', 'Bob', 'Sally']) AS t(devop),
UNNEST(ARRAY['a','b']) AS t(devs)
)
select array_join(array_agg(distinct example.devop),';'),array_join(array_agg(distinct example.devs),';') from example
当第二个数组为空时,我想要以下结果
_col0 _col1
----------------------------------------------
Sally;John;Bob;Sharon
解决方案
使用left join
:
WITH example AS (
SELECT devop, devs
FROM UNNEST(ARRAY['Sharon', 'John', 'Bob', 'Sally']) AS t(devop) LEFT JOIN
UNNEST(ARRAY[]) AS t(devs)
ON 1=1
)
. . .
推荐阅读
- sql - SQL 提取时间范围中间的事件
- javascript - 从 Javascript 完全完成后,CSS 高度转换不起作用
- sql - PostgreSQL将一列的所有值更新为大写
- html - 如何为 mm/yyyy 创建输入字段?
- scala - Scala Spark 如何将列数组 [string] 转换为包含 JSON 数组的字符串?
- android - 如何使用 TensorFlow Lite 在设备上使用多个自定义模型?
- regex - 正则表达式,在字符串中查找包含字符串的字符串
- php - 如何在PHP中将多个数组合并为一个
- flutter - Flutter onChanged 和 onSaved 一起用于文本输入
- java - 在 Velocity 模板中将时间显示为东部时间