2017-07-18 82 views
2

试图获取其构造这样的JSON响应:的Postgres返回JSON与组

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

查询调用由这是在表中的列新闻来源分组一个表。

由新闻来源我的代码组,但不使用新闻源作为重点:

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 
) 

回答

3

不要汇总完整的行,只有标题:

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

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

0

谢谢!

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

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