query return setof - 更新数据

query return setof - update data

我有 Postgres 函数,即 returns setof。我可以使用 INSERT INTO 直接用它创建 table,但这不是我想要的。

SELECT id, my_func() INSERT INTO data2

我需要根据一组结果行更新现有 table 中的数据。我怎样才能做到这一点? 我需要像 SELECT id, my_func() as t UPDATE data2 SET data = t WHERE data2.id = id

这样的东西

您没有向我们展示您的功能到底是什么 returns,但像这样的东西应该可以工作:

update data2 
  set data = f.data_column
from my_func() as f (id, data_column)
where t.id = data2.id;

这假设函数 returns 有两列,这样您就可以根据函数结果加入目标 table。