sql - SQL presto - 交叉连接未嵌套空值
问题描述
我有不同大小的数组,我希望数组中的每个值都位于不同的行中。为此,我使用了交叉连接 unnest。但是它正在工作,它正在删除空数组。
所以,当我这样做时,我的列 ID 具有不同的数组,有些是空值
select *
from table
cross join unnest (t.id) as t(order_id)
where length(order_id) = 5 or order_id is NULL
我只得到以下结果
ID | order_id |
---|---|
23deo jfr32 6582w | 23deo |
23deo jfr32 6582w | jfr32 |
23deo jfr32 6582w | 6582w |
而且我要
ID | order_id |
---|---|
23deo jfr32 6582w | 23deo |
23deo jfr32 6582w | jfr32 |
23deo jfr32 6582w | 6582w |
无效的 | 无效的 |
如果有人知道如何取消嵌套空值,将不胜感激。我一直在网上寻找,我看到我们可以包含一个 WITH ORDINALITY 子句,但我不知道它是如何工作的。
解决方案
使用LEFT JOIN UNNEST
而不是CROSS JOIN UNNEST
. Presto 319中添加了功能
如果您有以前的版本,那么解决方法可以使用子查询LEFT JOIN
:
with exploded as (
select *
from table t
cross join unnest (t.id) as t(order_id)
)
select t.*, e.order_id
from table t
left join exploded e on t.join_key=e.join_key
只需使用正确的加入密钥
推荐阅读
- json - 如何从使用 JSON 提取器提取的多个值中为每个请求使用一个值
- python - 解析 XML 文件时,有没有办法使用 lxml.etree 跳过第一个条目或在特定子项处开始迭代?
- python - 仅考虑小时计算时差
- reporting-services - 如何获取运行报表以在页脚中打印的用户的身份?
- jira - 有没有办法按组件分解 Jira 项目中的用户访问权限
- ssis - 将具有重复行的平面文件导入 SQL 服务器
- excel - 数据验证 Excel 自动填充列表
- amazon-web-services - 获取活动 AWS 网络接口的计数
- node.js - 在heroku上使用GCC编译c ++文件时出错
- javascript - React Redux 生命周期混淆