2011-06-19 7 views
2

選択された行を更新、私はSQL Server 2008のSQLアップデート -

を使用しています私は2つの列を持つMYTABLEという名前のテーブルがあります:IDを、STATUS

私はSTATUSあるレコードを返すストアドプロシージャを作成したいですしかし、このストアドプロシージャは、返された行のSTATUSを1に更新する必要があります。このクエリを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

出力について忘れてしまった - 私はSQL5000を頻繁に使用することを強要されています! – CResults

+0

@CResults - 本当です。私はこれがSQL Server 2005から動作することを言及する必要があります。 –

0

おそらくOUTPUT節を使用して行うことができます。