我正在使用 SQL Server 2008
我有一个名为 MYTABLE
的表,其中包含两列:ID
、STATUS
我想写一个存储过程返回STATUS
为0的记录。但是这个存储过程必须更新返回行的STATUS
为1。我怎么能在单个查询中执行此选择和更新操作吗?
最佳答案
update MyTable
set Status = 1
output inserted.*
where Status = 0
如果您想返回表在更新之前的样子,您应该使用 deleted.* 代替。
update MyTable
set Status = 1
output deleted.*
where Status = 0
如果您愿意,您当然可以同时使用两者,而不必使用 *
。您可以指定您感兴趣的列。
update MyTable
set Status = 1
output inserted.ID, inserted.status, deleted.status as OldStatus
where Status = 0
关于SQL 更新 - 更新选定的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6402103/