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

PostgreSQL中如何将多列值作为JSONB对象的键构建目标JSON结构

PostgreSQL中如何将多列值作为JSONB对象的键构建目标JSON结构

你遇到的问题很典型——当前用JSONB_AGG生成的是包含多个独立JSON对象的数组,而你需要的是把每个分组内的name作为键、numbers作为值,合并成一个单一的JSONB对象。

解决这个问题的关键是用JSONB_OBJECT_AGG函数,它专门用来将分组后的键值对聚合为一个JSONB对象,正好匹配你的需求。

直接修改你的查询代码即可:

WITH data (type, name, numbers) AS (
  VALUES 
    ('good', 'A', ARRAY [1,2,3]),
    ('good', 'B', ARRAY [5]),
    ('bad',  'C', ARRAY [8,9])
)
SELECT type,
       JSONB_OBJECT_AGG(name, numbers) AS things
FROM data
GROUP BY type;

执行这个查询后,你会得到预期的结果:

  • 对于type='good',things字段的值是:
{"A": [1, 2, 3], "B": [5]}
  • 对于type='bad',things字段的值是:
{"C": [8, 9]}

简单解释下JSONB_OBJECT_AGG的作用:它接受两个参数,第一个参数是要作为JSON对象键的字段(这里是name),第二个参数是对应键的值(这里是numbers),分组后会自动把同一组内的所有键值对合并成一个完整的JSONB对象,完全符合你想要的结构。

备注:内容来源于stack exchange,提问作者Franta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 07:49:30