我有一些简单的 SQL 来重置表中的一些值
UPDATE tableA SET field1 = 0
WHERE field2 IN (SELECT .......)
这工作正常,但我想修改它以返回所有field1
值在重置为零之前的值。这是我试过的......
UPDATE tableA SET field1 = 0
WHERE field2 IN (SELECT .......)
RETURNING field1
要注意的是,这仅在修改后返回 field1 的值。是否可以事先获得价值?不运行单独的查询?
我认为唯一的选择是先选择旧值,然后返回这些值:
假设有一个名为的主键列,
pk
您可以这样做:将 PK 值从第一个 CTE(“old_values”)传递到更新行的 CTE,避免了在 UPDATE 语句中对 column2 重复条件。
编辑:
我想到这可以简化,因为 CTE 看不到基础表的更改。