0

命令

update invoice set unpaid = unpaid - 123
    where regexp_replace(invocienumber, '-.*', '', 'g') ='12345'
returning *

更新编号以 12345 开头的所有发票。

如何解决这个问题,以便只更新一张发票并取回更新的发票?

我试过了

update invoice set unpaid = unpaid - 123
    where regexp_replace(invocienumber, '-.*', '', 'g') ='12345'
limit 1
returning *

但有错误。

使用 PostgreSQL 13.2,由 Visual C++ build 1900 编译,64 位

使用 psqlODBC

4

1 回答 1

2

不漂亮,但这是一种方法:

update invoice 
set unpaid = unpaid - 123
where id = (
     select id from invoice 
     where regexp_replace(invocienumber, '-.*', '', 'g') ='12345'
     limit 1
)
returning * ;

或者,您可以使用 cte 而不是子查询并加入 cte 来更新您的表

于 2021-08-05T14:22:57.200 回答