sql - 使用循环一次更新 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
解决方案
SET ROWCOUNT
正在弃用UPDATE
声明(这是关于它的知识库文章)。因此,如果您正在运行现代或更旧版本的引擎,您可以使用:
SET ROWCOUNT 1000000
UPDATE Product
SET productInd = 0
WHERE productInd IS NULL
SET ROWCOUNT 0
几点注意事项:
- 您只有一个语句,因此它已经隐式包含在事务中。
- 不要
as
用作表别名;这是一个保留字。(事实上,编译器让你有点惊讶!) - 由于
ROWCOUNT
for 更新即将结束,如果您仍想完成您所要求的,则需要在存储过程中使用循环。
推荐阅读
- python - 读入两个文件并用合并的字符串写入第三个文件
- reactjs - 如何在反应中改变 reactstrap 模态的样式?
- javascript - 如何在 java 脚本中获取用户输入并在页面上显示此输入?
- c - 在另一个 .c 文件上声明函数使浮点乘法始终为 0
- python - 识别和删除 pandas 时间序列中的无效时间步
- tags - 使用通用 ctags 支持编译 GNU Global
- kubernetes - 使用命令行等待 kubernetes 作业在失败/成功时完成
- haskell - 如何让 ghc 以不同于默认配置的方式调用链接器?
- python - seaborn 热图的数据准备
- sage - sage中获取有向图的关联矩阵时如何指定顶点顺序和边顺序?