PostgreSQL如何将多行JSON聚合为单个JSON对象
合并多个单键JSON对象为单个JSON对象(PostgreSQL)
要把这些单个键值对的JSON合并成一个完整的JSON对象,jsonb_agg不适用是因为它会生成JSON数组,而非合并键值对。你可以用jsonb_object_agg(针对JSONB类型)或json_object_agg(针对JSON类型)来实现:
假设数据存储在表中
如果你的数据存放在表json_data的data列(类型为jsonb),执行以下SQL:
SELECT jsonb_object_agg(key, value) AS combined_json FROM json_data, jsonb_each(data);
如果列类型是普通json,替换为:
SELECT json_object_agg(key, value) AS combined_json FROM json_data, json_each(data);
直接处理临时数据
如果是临时测试数据,可用VALUES子句构造数据源:
SELECT jsonb_object_agg(key, value) AS combined_json FROM ( VALUES ('{"0": 2}'::jsonb), ('{"2": 0}'::jsonb), ('{"3": 0}'::jsonb), ('{"4": 1}'::jsonb), ('{"13": 0}'::jsonb) ) AS temp(data), jsonb_each(data);
执行后会输出你需要的单个JSON对象:
{ "0": 2, "2": 0, "3": 0, "4": 1, "13": 0 }
内容的提问来源于stack exchange,提问作者Vince
相关产品推荐
相关产品推荐

