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

如何在Redshift的SUPER类型列上编写IN查询

Redshift Super类型数组的包含查询方法

针对你在Redshift中使用Super类型存储JSON数组,需要检查数组任意元素是否存在于指定集合中的需求,以下是两种可行的查询方式:

方法1:使用ANY操作符匹配数组元素

利用Redshift对Super数组的支持,通过user_segments[*]表示数组的所有元素,结合ANY操作符判断目标值是否存在于数组中:

SELECT * FROM test_table 
WHERE 5 = ANY(user_segments) OR 6 = ANY(user_segments);

如果目标值集合较大,可简化为数组形式传入:

SELECT * FROM test_table 
WHERE user_segments[*] && ARRAY[5,6]::SUPER;

方法2:通过UNNEST展开数组后筛选

使用PartiQL的UNNEST函数将数组展开为行,再筛选匹配的记录并去重:

SELECT DISTINCT t.*
FROM test_table t, UNNEST(t.user_segments) AS segment
WHERE segment IN (5, 6);

补充说明

  • 你之前尝试的user_segments IN (5,6)无法运行,是因为user_segments是数组类型,该写法会将整个数组与单个数值比较,逻辑不匹配;
  • 指定索引user_segments[0]仅会检查数组第一个元素,无法覆盖所有元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 22:56:00