2011-06-19 66 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起作用。 –