Postgres与小组一起回归json

时间:2017-07-18 04:19:03

标签: json postgresql

尝试获取结构如下的JSON响应:

{
  'news_source_1' : [{'headline': 'title'},{'headline': 'title'}],
  'news_source_2' : [{'headline': 'title'},{'headline': 'title'}],
  'news_source_3' : [{'headline': 'title'},{'headline': 'title'}]
}

该查询调用由news_source分组的单个表,该表是表中的一列。

我的新闻来源的代码组,但不使用新闻来源作为关键:

SELECT array_to_json(array_agg(stories)) FROM stories GROUP BY source

返回:

{
  [{'headline': 'title'},{'headline': 'title'}],
  [{'headline': 'title'},{'headline': 'title'}],
  [{'headline': 'title'},{'headline': 'title'}]
}

是否可以将新闻源列用作父键? 不确定如何使用PG子语法编写此SQL查询。

stories (
 news_source,
 headline
)

2 个答案:

答案 0 :(得分:5)

不要聚合整行,只有标题:

SELECT json_build_object(news_source, json_agg(headline))
FROM stories 
GROUP BY news_source
ORDER BY news_source;

在线示例:http://rextester.com/LUOUR61576

答案 1 :(得分:0)

谢谢!

我稍微修改了您的工作代码,以便每个组返回一组记录,而不只是一个字段。

  SELECT json_build_object(source, json_agg(stories.*))
  FROM stories 
  GROUP BY source
  ORDER BY source;