gpt4 book ai didi

SQL Server使用WHILE循环批量删除不起作用

转载 作者:行者123 更新时间:2023-12-02 05:39:07 27 4
gpt4 key购买 nike

我有一个非常大的表,因此我使用以下命令来删除旧条目:

WHILE (@@ROWCOUNT > 0)
BEGIN
DELETE TOP (5000) FROM myTable
WHERE date < 20130103
END

我已经使用不同的日期运行了几次。有时它工作正常(大约需要 20 分钟),但有时查询会立即完成并且没有删除任何内容。当发生这种情况时,我只需从该表中执行一个简单的 SELECT 语句,然后再次尝试上面的 WHILE 语句,然后它就起作用了!有谁知道这是为什么吗?我需要自动执行此查询以定期运行以控制表大小,但我想确保它在运行时实际上正确删除。谢谢。

最佳答案

这段代码之前运行了什么? @@ROWCOUNT 将被设置为执行它的任何语句。如果您事先运行其他命令,它可能是 0

相反,您可以强制初始计数为 1:

DECLARE @Rows INT
SET @Rows = 1

WHILE (@Rows > 0)
BEGIN
DELETE TOP (5000) FROM myTable
WHERE date < 20130103

SET @Rows = @@ROWCOUNT
END

关于SQL Server使用WHILE循环批量删除不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15558073/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com