Postgres:将多个表作为JSON哈希返回

时间:2019-07-20 00:50:23

标签: postgresql

当前,我正在使用如下查询从单个表(使用Postgres)返回JSON:

SELECT array_to_json(array_agg(row_to_json(t)))
  FROM (
    SELECT posts.id, posts.title FROM posts
  ) t

哪个返回一个JSON数组,如下所示:

[{"id": 1, "title": "what"}]

但是,我想在一个查询中从多个表返回JSON,以便最终的JSON看起来像这样:

{
  "posts": [{"id": 1, "title": "what"}],
  "comments": [{"id": 1, "post_id": 1, "body": "i dunno"}]
}

想法?

谢谢。

1 个答案:

答案 0 :(得分:1)

我对您的表或如何创建数组一无所知。但是,如果您只想将所有评论记录聚合到一个数组中,而将所有帖子聚合到另一个数组中,则可能是您的代码:

demo:db<>fiddle

SELECT
    json_build_object(
        'posts', (SELECT json_agg(row_to_json(p)) FROM posts p),
        'comments', (SELECT json_agg(row_to_json(c)) FROM comments c)
    )