首页 > 解决方案 > 使用循环一次更新 100 万条数据

问题描述

我需要使用循环一次更新 100 万条数据。这就是我所拥有的。

SET Rowcount 1000000
While (1 = 1)
   Begin
   Begin Transaction

   Update as
   Set as.productInd = 0
   From Product as
   Where as.ProductInd IS NULL
If @@RowCount = 0
Begin

Commit Transaction
Break

End
Commit Transaction

End
Set Rowcount 0

标签: sqlsql-serverloopssql-update

解决方案


SET ROWCOUNT正在弃用UPDATE 声明(这是关于它的知识库文章)。因此,如果您正在运行现代或更旧版本的引擎,您可以使用:

SET ROWCOUNT 1000000

   UPDATE Product
   SET productInd = 0
   WHERE productInd IS NULL

SET ROWCOUNT 0

几点注意事项:

  • 您只有一个语句,因此它已经隐式包含在事务中。
  • 不要as用作表别名;这是一个保留字。(事实上​​,编译器让你有点惊讶!)
  • 由于ROWCOUNTfor 更新即将结束,如果您仍想完成您所要求的,则需要在存储过程中使用循环。

推荐阅读