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

使用jsonb_to_recordset函数报SQL错误42P01:表sometable缺少FROM子句条目

问题原因

你当前的SQL仅在jsonb_to_recordset函数参数中引用了sometable的data字段,但没有将sometable本身加入查询的FROM子句列表中,数据库无法识别sometable的引用来源,因此抛出42P01类的表不存在错误。

正确写法

基础写法(PostgreSQL 9.4+通用)

先将sometable加入FROM子句,再调用jsonb_to_recordset解析它的data字段:

SELECT t.id, t.city
FROM sometable,
     jsonb_to_recordset(sometable.data) AS t(id int4, city varchar)

如果你的表名是大小写混合格式或包含特殊字符,需要保留原SQL的双引号包裹表名:

SELECT t.id, t.city
FROM "sometable",
     jsonb_to_recordset("sometable".data) AS t(id int4, city varchar)

显式LATERAL写法(适配复杂查询场景)

如果你需要在查询中添加过滤条件、关联其他表,更推荐使用显式横向连接写法,逻辑更清晰:

SELECT t.id, t.city
FROM "sometable"
CROSS JOIN LATERAL jsonb_to_recordset("sometable".data) AS t(id int4, city varchar)

如果需要保留data字段为NULL、空数组的原表行,把CROSS JOIN LATERAL替换为LEFT JOIN LATERAL ... ON true即可:

SELECT t.id, t.city
FROM "sometable"
LEFT JOIN LATERAL jsonb_to_recordset("sometable".data) AS t(id int4, city varchar) ON true

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:06:05