首页 > 解决方案 > 聚合返回 * 作为数组

问题描述

我有这个简单的查询:

delete from public.field
where template_id = 1
returning *

这工作正常,但当然它单独返回每一行,而我需要它返回编辑的每一行的数组。

我在另一个查询中有这个工作,这就是我想格式化删除查询的输出的方式:

SELECT array_to_json(array_agg(to_json(fields))) as fields

我无法解决的是如何将两者结合起来而不会出现语法错误。

这是在 PostgreSQL 9.6 中。

标签: sqlarraysjsonpostgresql

解决方案


这是做你想做的吗?

with d as (
      delete from public.field
      where template_id = 1
      returning *
     )
select array_to_json(array_agg(to_json(d)))
from d;

这将返回deleteCTE 的结果。然后使用 CTE 生成所需的 JSON 表示。


推荐阅读