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

如何在PostgreSQL中生成单个JSON对象而非JSON数组

解决方案

直接使用PostgreSQL的jsonb_object_agg聚合函数就能实现需求,它会把关联后的所有键值对合并成单个JSONB对象:

SELECT jsonb_object_agg(Table1.key, Table2.value)
FROM Table1
JOIN Table2 USING(guid);

原理说明

  • 你之前用的jsonb_build_object是行级函数,每匹配一行就生成一个独立的JSON对象,所以查询结果是多行JSON,最终会被客户端封装成JSON数组。
  • jsonb_object_agg是聚合函数,会遍历所有匹配的行,将每行的key和value整合到同一个JSON对象中,直接返回你需要的单个对象结构。

处理重复键的情况(可选)

如果存在多个行对应同一个key的情况,jsonb_object_agg默认会保留最后出现的那个值。如果需要指定保留规则,可以通过排序来控制:

SELECT jsonb_object_agg(Table1.key, Table2.value) WITHIN GROUP (ORDER BY guid DESC)
FROM Table1
JOIN Table2 USING(guid);

上面的语句会按guid降序排列,确保最新的(或指定顺序的)值被保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:04:51