如何限制更新到单行
How to limit update to single row
命令
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
不漂亮,但这是一种方式:
update invoice
set unpaid = unpaid - 123
where id = (
select id from invoice
where regexp_replace(invocienumber, '-.*', '', 'g') ='12345'
limit 1
)
returning * ;
或者,您可以使用 cte 而不是子查询,并与 cte 一起更新您的 table
命令
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
不漂亮,但这是一种方式:
update invoice
set unpaid = unpaid - 123
where id = (
select id from invoice
where regexp_replace(invocienumber, '-.*', '', 'g') ='12345'
limit 1
)
returning * ;
或者,您可以使用 cte 而不是子查询,并与 cte 一起更新您的 table