我有一个表有一列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(上面的链接):
从受影响的每一行返回信息或基于该行的表达式
通过插入、更新、删除或合并语句。这些结果可以是
返回到处理应用程序