我有一个表有一列processed它的值是0表示失败,1表示成功。我想加上第三个临时案例,它的值是2。
我以前的问题是:

string query = "SELECT * FROM dbo.tableName WHERE processed = @processed";

我想对这个选择所生成的行进行更新。当然,我可以在.net中完成,但我想知道是否有一个查询可以同时选择行和更新流程列。
我正在使用SQL Server 2008
这个问题说明了一个非常古老的解决方案,那就是输出,而我自己却无法发现它。

最佳答案

您可以使用OUTPUT clause

UPDATE dbo.tableName
SET processed = 2 --or whatever you want..
OUTPUT inserted.*
WHERE processed = @processed

来自MSDN(上面的链接):
从受影响的每一行返回信息或基于该行的表达式
通过插入、更新、删除或合并语句。这些结果可以是
返回到处理应用程序

10-08 17:19