如何在同一个表上将两个单独的SQL更新语句合并为一个命令?

问题描述 投票:0回答:1
UPDATE table SET val1 = val1 + 1 where (val1 < $1 AND val1 >= ($1-$3));
update table set (val1,val2) = (val1 - $3, val2 + 1) WHERE val3 = $2 RETURNING %s

不幸的是,这给出了一个错误“无法在准备好的语句中插入多个命令”。有没有办法将这两个语句合并为一个?

sql postgresql plpgsql
1个回答
0
投票

是。在Postgres中你可以使用CTE:

with u1 as (
      update table set val1 = val1 + 1 where (val1 < $1 AND val1 >= ($1-$3))
     ),
     u2 as (
      update table set (val1,val2) = (val1 - $3, val2 + 1) WHERE val3 = $2 RETURNING %s
     )
select *
from u2;
© www.soinside.com 2019 - 2024. All rights reserved.