sql - PSQL 查询将值生成为具有相同唯一 ID 的 json 的 json 数组

标签 sql json postgresql

我试图在一个表中生成一个 PSQL 查询,该表具有 id、description 和 session_unique_id 等值。我想选择像一组 json 数组一样的数据,每个数组都有每行的 json 数据,它们具有相同的 session_unique_id。

我期待这样的结果。

[
 [
  {"id":"1","description":"test","session_unique_id":"123"},
  {"id":"2","description":"test","session_unique_id":"123"},
  {"id":"3","description":"test","session_unique_id":"123"}
 ],
 [
  {"id":"4","description":"test","session_unique_id":"124"},
  {"id":"5","description":"test","session_unique_id":"124"},
  {"id":"6","description":"test","session_unique_id":"124"}],
 [
  {"id":"7","description":"test","session_unique_id":"125"},
  {"id":"8","description":"test","session_unique_id":"125"},
  {"id":"9","description":"test","session_unique_id":"125"}
 ]
]

最佳答案

使用to_jsonb()将行转换为 jsonb 和 jsonb_agg()两次聚合嵌套数组中的数据:

select jsonb_agg(unique_id order by session_unique_id)
from (
    select session_unique_id, jsonb_agg(to_jsonb(t)) as unique_id
    from my_table t
    group by session_unique_id
    ) t;

在这里测试:SqlFiddle.

关于sql - PSQL 查询将值生成为具有相同唯一 ID 的 json 的 json 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47765915/

相关文章:

mysql - 组合使用相同表和相同列的两个查询

MySQL where 子句后的序号

php - 如何排除三个不同表的查询结果?

php - 负 SQL 查询

sql - 通用集合返回函数

php - Json_encode 二进制字符串

c# - 拉出一些div标签并用c#放入json或xml文件格式

c# - 将内存流写入文件

java - postgresql 的 Hibernate 5 命名策略

sql - PostgreSQL 选择不在其他日期之间的日期之间的日期