【发布时间】:2023-01-07 00:47:15
【问题描述】:
我在一张表中有 9 亿行。如何在条件超过 1000 天的情况下每次删除行。
我正在使用以下查询:
delete
FROM db.dbo.table
WHERE [DateIn] <= DATEADD(DAY, -1000, GETDATE());
它应该删除超过 1000 天,但每次删除都不符合我的预期。
【问题讨论】:
-
删除 1 条缺失记录是什么意思?你是说它没有删除 1 行,所以 999 行,而不是 1,000 行?
-
该逻辑不会删除 1,000 行,它会删除 DateIn 超过 1,000 天前的所有行。从今天开始,那将是 2020 年 4 月 11 日。我觉得这不是你想要做的。
-
我改写了你的问题,希望它更有意义。你能解释一下为什么删除没有按照你想要的那样工作吗?以上将删除所有
DateIn的值小于 1,000 天前的行;所以对于今天,DateIn是在 2020 年 4 月 11 日或之前{该查询运行的时间}。 -
作为旁注,您确实需要升级您的实例。 SQL Server 2008 已经完全地自 2019 年年中以来不受支持;它没有任何安全更新超过 3.5 年。它已知存在安全漏洞,并且在支持结束后这么长时间继续使用它可以被认为是非常不负责任的。
-
我怀疑“lack”最初是“lakh”,表示 100,000。我认为 OP 想要删除超过 1,000 天的任何内容,但一次将其分成 100,000 行的多个事务
标签: sql-server sql-server-2008