如何对 N 列执行与 array_to_json(array_agg(tags.*)) 完全相同的操作

How to do exactly same thing as array_to_json(array_agg(tags.*)) for N columns

我目前正在使用 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

使用派生的 table,例如:

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