PostgreSQL - 将行转换为 JSON 键/值对
Posted
技术标签:
【中文标题】PostgreSQL - 将行转换为 JSON 键/值对【英文标题】:PostgreSQL - Convert rows into JSON key/value pair 【发布时间】:2018-06-22 07:54:57 【问题描述】:我有一个像这样的简单表格:
Key_1 | Key_2 |价值
行有多个 key_1 和 key_2 的组合。
我想将此表中的行放入 JSON 结构中,如下所示:
"myJSON":
"key_1":
"key_2": value,
"key_2": value
"key_1":
"key_2": value,
"key_2": value
我能够使用此查询将输出放入行中:
SELECT
key_1,
jsonb_object_agg(key_2,value)
FROM table
GROUP BY key_1
ORDER BY key_1;
这会产生如下输出:
key_1 | "key_2":value, "key_2": value
key_1 | "key_2":value, "key_2": value
但是,我无法完成最后一步,将这些返回的行放入 JSON 对象结构中,如上所述。我不能使用另一个聚合函数,因为它抱怨嵌套。
有什么办法可以做到吗,还是我必须与数据库外部的结果集有关?
【问题讨论】:
【参考方案1】:这就是我想要的:
WITH t AS (
SELECT
key_1,
jsonb_object_agg(key_2,value) key_pair
FROM table
GROUP BY key_1
ORDER BY key_1
)
SELECT jsonb_object_agg(key_1, key_pair)
FROM t
【讨论】:
以上是关于PostgreSQL - 将行转换为 JSON 键/值对的主要内容,如果未能解决你的问题,请参考以下文章
PostgreSQL9.4往jsonb字段新增键值SQL怎么写
Postgresql 更新 JSON 列保留一些键值并将附加键值添加为空