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

PostgreSQL如何将另一张表的字段值更新到目标表的JSONB列中

报错原因

你编写的SQL中's.category'被单引号包裹,PostgreSQL会将其识别为普通字符串而非source表的category字段引用,同时jsonb_set函数的第三个参数要求传入jsonb类型的值,直接传入文本类型的字段未做类型转换也会触发类型校验错误。

正确实现方案

方案1:使用jsonb_set函数实现

UPDATE public.target t
SET combinations = jsonb_set(combinations, '{subject}', to_jsonb(s.category), false)
FROM public.source s
WHERE s.part_no = t.part_no;

说明:通过to_jsonb()函数将源表的category文本字段转换为jsonb类型,符合函数参数要求,即可完成更新。

方案2:使用jsonb拼接语法实现(更直观)

如果使用PostgreSQL 9.5及以上版本,也可以用jsonb拼接写法直接覆盖subject字段值:

UPDATE public.target t
SET combinations = combinations || jsonb_build_object('subject', s.category)
FROM public.source s
WHERE s.part_no = t.part_no;
结果校验

更新完成后执行以下查询即可验证结果是否符合预期:

SELECT id, part_no, combinations FROM public.target ORDER BY id;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:45:03