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

如何在PostgreSQL中删除JSON字段内值为指定值的所有属性

完整补全方案(适配PostgreSQL)

补全后的更新语句:

UPDATE records 
SET payload = (
    SELECT json_object_agg(key, value)
    FROM json_each(payload)
    WHERE value::INT != 3
)
WHERE parent = 1 
AND EXISTS (
    SELECT 1 
    FROM json_each(payload) 
    WHERE value::INT = 3
);

占位符说明:

  1. 第一个??(payload赋值部分):
(SELECT json_object_agg(key, value) FROM json_each(payload) WHERE value::INT != 3)

逻辑说明:先将JSON类型的payload拆分为独立的键值对,过滤掉值为3的属性后,重新聚合为新的JSON对象。
2. 第二个??(WHERE附加筛选条件):

EXISTS (SELECT 1 FROM json_each(payload) WHERE value::INT = 3)

逻辑说明:仅筛选出parent=1且payload中确实存在值为3的属性的记录,避免执行无意义的更新操作。

如果你的payload字段为JSONB类型,只需要将上述语句中的json_each替换为jsonb_each、json_object_agg替换为jsonb_object_agg即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:45:10