Postgresql:如何在不使用中间hstore的情况下将键值表转换为json
发布时间:2020-12-13 16:01:52 所属栏目:百科 来源:网络整理
导读:我有一个带有此表单的键值 postgresql表 pk | fk | key | value---|----|-----|------1 | 11 | k1 | v12 | 11 | k2 | v23 | 22 | k3 | v34 | 33 | k1 | v15 | 33 | kk | vk6 | 33 | kn | vn 我需要转换为由fk分组的json对象: fk | kv---|------------11 | {
我有一个带有此表单的键值
postgresql表
pk | fk | key | value ---|----|-----|------ 1 | 11 | k1 | v1 2 | 11 | k2 | v2 3 | 22 | k3 | v3 4 | 33 | k1 | v1 5 | 33 | kk | vk 6 | 33 | kn | vn 我需要转换为由fk分组的json对象: fk | kv ---|------------ 11 | {"k1": "v1","k2": "v2"} 22 | {"k3": "v3"} 33 | {"k1": "v1","kk": "vk","kn": "vn"} 我已经找到了使用和中间hstore转换的方法: SELECT fk,hstore_to_json(hstore(array_agg(key),array_agg(value))) as kv FROM tbl GROUP BY fk,pk; 问题是,hstore扩展在生产时不适用于我,我无法安装它,是否有其他方法可以获得相同形式的输出? PS:postgresql版本是9.4.8 解决方法
它实际上与hstore版本非常相似:
SELECT fk,json_object(array_agg(key),array_agg(value)) AS kv FROM tbl GROUP BY fk ORDER BY fk; 产量: fk | kv ---+------------------------------------------ 11 | '{"k1" : "v1","k2" : "v2"}' 22 | '{"k3" : "v3"}' 33 | '{"k1" : "v1","kk" : "vk","kn" : "vn"}' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |