You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redshift中基于SUPER类型数组的自连接问题求助

问题解决:Redshift中SUPER类型数组的自连接层级查询

问题原因

Redshift的ANY/ALL运算符目前仅支持原生数组类型(如integer[]),你使用的ParentID是SUPER类型的数组,尽管存储的是数组结构,但无法直接被ANY识别,因此触发op ANY/ALL (array) requires array on right side错误。

正确解决方案

使用Redshift的UNNEST函数将SUPER类型的数组拆分为多行,再进行自连接,即可实现一个子节点关联多个父节点的需求。

最终SQL语句

SELECT 
    a.productid, 
    a.product, 
    b.product AS parent
FROM sandbox.productmk2 a
-- 拆分SUPER数组为单独的父ID行
CROSS JOIN UNNEST(a.parentid) AS t(parent_id)
-- 关联父节点信息,过滤无效的0值
JOIN sandbox.productmk2 b 
    ON b.productid = t.parent_id::integer
    AND t.parent_id != 0;

结果说明

执行上述SQL后,会得到你期望的输出:

ProductIDProductParent
3HatsHeadwear
3HatsWoolwear

补充说明

  • UNNEST(a.parentid)会把SUPER数组中的每个元素拆分成单独的行,比如[1,2]会拆分为两行,分别对应1和2;
  • 示例中存在ParentID = [0]的无效父节点,通过AND t.parent_id != 0可以过滤掉这类不需要的关联;
  • 如果你的SUPER数组存储的是非整数类型,需根据实际情况调整::integer的类型转换逻辑。

内容的提问来源于stack exchange,提问作者Sam B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 17:17:10