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

PostgreSQL按字段分组生成指定JSON格式结果的技术问题

PostgreSQL按字段分组生成嵌套JSON数组

你需要先按a字段分组,将每个分组内的b值聚合为数组,再转换为JSON结构,以下是正确的查询语句:

SELECT array_to_json(array_agg(row_to_json(t)))
FROM (
    SELECT a, array_agg(b) AS b
    FROM t1
    GROUP BY a
) t;

逻辑说明

  1. 内层子查询:通过GROUP BY a对数据按a分组,使用array_agg(b)将每个分组中的b值合并为一个数组,得到形如(1, [1,2])、(2, [7,8,9])的分组结果
  2. row_to_json(t)将每个分组的行数据转换为JSON对象,例如{"a":1, "b":[1,2]}
  3. 外层通过array_agg将所有JSON对象聚合为数组,再用array_to_json转换为最终的JSON数组输出

执行后会得到你期望的结果:

[{"a":1,"b":[1,2]},{"a":2,"b":[7,8,9]}]

原查询问题分析

你之前的查询没有做分组操作,只是直接将每条(a,b)记录转换为JSON后聚合,因此得到的是每条独立记录的JSON数组,没有实现按a分组聚合b的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 03:25:08