PostgreSQL JSON查询结果合并为单行哈希结构需求
合并PostgreSQL多行JSON为单一哈希结构
我来帮你搞定这个JSON合并的需求~要把这三行独立的JSON数据整合成同一行的哈希结构,咱们可以借助PostgreSQL的JSON处理函数来实现,具体步骤如下:
假设数据存储结构
先假设你的数据存在名为metric_records的表中,存储JSON的列叫data_json,表内数据就是你给出的那三行JSON内容。
实现查询语句
用下面的SQL就能把多行JSON的键值对合并成一个完整的哈希结构:
SELECT jsonb_object_agg(key, value) AS merged_hash FROM metric_records, jsonb_each(data_json);
代码逻辑说明
jsonb_each(data_json):把每行的单个JSON对象拆分成key(比如Name1、Name2这类)和value(对应的数值数组)的行记录;jsonb_object_agg(key, value):将所有拆分出来的键值对聚合为一个单一的JSONB对象,也就是你需要的同一行哈希结构。
合并后的结果示例
执行完上面的查询,你会得到这样的单一JSON结果:
{ "Name1": [["70.2", "2018-02-19T16:26:08.857134"], ["69.93", "2018-02-19T16:26:16.568789"]], "Name2": [["70.2", "2018-02-19T16:26:08.857134"], ["69.93", "2018-02-19T16:26:16.568789"]], "NewName1": [["70.2", "2018-02-19T16:26:08.857134"], ["69.93", "2018-02-19T16:26:16.568789"]] }
如果你的JSON列是json类型而非jsonb,只需要把jsonb_each换成json_each,jsonb_object_agg换成json_object_agg就可以啦,效果完全一致。
内容的提问来源于stack exchange,提问作者acrogenesis
相关产品推荐
相关产品推荐

