如何为N列

时间:2017-06-19 18:05:15

标签: json postgresql postgresql-9.5

我目前正在使用PostgreSQL JSON功能从我的查询中创建JSON对象,因此我可以轻松地在我的应用程序中使用它或将其传递给前端。

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

1 个答案:

答案 0 :(得分: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