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

PostgreSQL 13如何将两列多行数据转换为键值对形式JSON对象

PostgreSQL 多行两列聚合为单个JSON对象方案

PostgreSQL 原生提供了专门的聚合函数处理这类场景,无需手动拼接字符串:

  • 要返回标准json类型结果,使用json_object_agg
  • 要返回jsonb类型结果(推荐,性能更好、支持丰富的JSON操作符与索引),使用jsonb_object_agg

可直接运行的SQL

-- 返回json类型
SELECT json_object_agg(key, value) FROM mytable;

-- 返回jsonb类型
SELECT jsonb_object_agg(key, value) FROM mytable;

执行后得到的结果完全符合预期:

{"key1":"value1","key2":"value2","key3":"value3"}

原有写法的问题

之前尝试的jsonb_agg(jsonb_build_object(key ,value))逻辑是为每一行生成一个独立的单键值对JSON对象,再把这些独立对象聚合成数组,因此最终输出的是对象数组结构,不是合并后的单个JSON对象。

注意事项:如果表中存在重复的key值,聚合时后出现的value会覆盖同key的旧值,符合JSON键唯一的语法要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:16:17