2017-06-19 23 views
3

我目前正在使用PostgreSQL JSON功能来创建JSON对象而不是我的查询,所以我可以在我的应用程序中轻松使用它或将它传递给前端。如何做与N列array_to_json(array_agg(tags。*))完全相同的东西

array_to_json(array_agg(tags.*))确实在我需要的时候(创建带有列的JSON对象作为数据中的键并将其转换为数组),但是我还没有找到任何方法如果我只需要一个或两个来自标签的列。我玩过各种JSON和数组函数,但我从来没有达到过相同的结果。感谢您的帮助

整个查询

SELECT 
    tags_components.component_id, 
    array_to_json(array_agg(tags.*)) as tags 
FROM tags_components 
LEFT JOIN tags ON tags.id = tags_components.tag_id 
AND tags_components.component_name = 'company' 
GROUP BY tags_components.component_id 

回答

4

使用派生表,例如:

SELECT 
    tags_components.component_id, 
    array_to_json(array_agg(tags.*)) as tags 
FROM tags_components 
LEFT JOIN (
    SELECT id, name -- only two columns 
    FROM tags 
    ) tags 
ON tags.id = tags_components.tag_id 
AND tags_components.component_name = 'company' 
GROUP BY tags_components.component_id 
+0

有趣的是,我不会想到的是,它确实有效:) –

相关问题