PostgreSQL:在同一个查询中,插入一个表,然后使用相同的子查询更新另一个表



我有一个相当复杂的查询,我发现很难在FROM中创建从同一子查询更新两个不同表的结果。我面临的困难表明我尝试了错误的流程:

下面是我从子查询中更新表1的脚本的一个极其简化的版本:

UPDATE 
table1  
SET 
columnX= subquery.column2
FROM 
(
SELECT column1, column2, column2
FROM table2
) AS subquery
WHERE subquery.column1 = table1.column1;

现在,我需要将第三个表(table3(放入混合中,并将table2(subquery(.column2映射到INSERT上的值。我不能使用第二个查询来实现这一点,因为子查询生成的UUID必须在table1.columnX和table3.column1中保持。

我可以在子查询中包括INSERT,同时仍然返回相同的子查询表吗?

INSERT。。。RETURNING uuid_column_name可能是您在子查询中所需要的魔法。

https://www.postgresql.org/docs/13/sql-insert.html

最新更新