2011-06-19 95 views
2

我使用SQL Server 2008的SQL更新 - 更新所选行

我有一个名为表MYTABLE两列:IDSTATUS

我想写一个存储过程返回其STATUS是记录0.但是,这个存储过程必须将返回行的STATUS更新为1.我如何在单个查询中选择和更新操作?

回答

9
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 
+2

该死的忘了输出 - 我非要被经常使用sql2000! – CResults

+0

@CResults - 真的。我应该提到这从SQL Server 2005起作用。 –