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