SQL 更新 - 更新选定的行

标签 sql sql-server stored-procedures sql-update

我正在使用 SQL Server 2008

我有一个名为 MYTABLE 的表,其中包含两列:IDSTATUS

我想写一个存储过程返回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/

相关文章:

java - 如何在没有域类的querydsl中构造查询

SQL 存储率随时间变化和 SELECT 率在特定时刻有效

sql-server - 临时表是线程安全的吗?

mysql - Phpmyadmin中编写程序时出错

MySQL存储过程;多语句过程,抛出错误

java - 获取时差java.sql.Time

mysql - 在MySQL中将行限制为列的总和等于某个值

sql - TSQL 计算多列中的出现次数

SQL Server CASE 语句对表达式求值一次

sql-server - 存储过程中可以有可选的 OUTPUT 参数吗?