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

PostgreSQL如何基于JSONB列内的值实现两张表的关联查询

错误原因

你提交的SQL存在三处语法/逻辑问题:

  • 多余的-> 'ps_sku'取值操作:根据你给出的product.sku存储格式[149461190],该字段本身就是JSON数组,没有外层嵌套ps_sku键,无需额外取键。
  • 隐式逗号连接和显式JOIN混写导致解析错误,集返回函数调用需要搭配LATERAL关键词保证语法规范。
  • USING子句要求关联字段必须放在括号内,你漏写了括号。

正确实现代码

根据item.sku的字段类型选择对应写法:

情况1:item.sku为数值类型

SELECT * 
FROM product ps
CROSS JOIN LATERAL jsonb_to_recordset(ps.sku) AS t(sku int)
JOIN item v USING (sku);

情况2:item.sku为文本类型

SELECT * 
FROM product ps
CROSS JOIN LATERAL jsonb_to_recordset(ps.sku) AS t(sku text)
JOIN item v USING (sku);

可选调整

如果需要保留没有匹配sku的product行,可以把CROSS JOIN LATERAL替换为LEFT JOIN LATERAL,按需添加过滤条件即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:24:04