【发布时间】:2015-09-24 01:25:11
【问题描述】:
我正在使用 MS SQL 数据库,我有一个名为“Logs”的表,如下所示:
记录一个接一个地添加到这里,所以几天/几周后表格变得相当大。
我需要定期做一些清理工作。 IE。我需要一个 SQL 查询来删除旧行并仅保留此表中最近的 100 条记录。
我同意最好让它“删除早于 some_date 的记录”...以前是这样的,但客户希望它不同:( 所以...我们来了。
顺便说一句:我对人们对这个问题持否定态度有点失望。有什么问题吗?... 想象一下:这个问题已经产生了 4 个答案!!! ......一个人决定对此表示否定!现在我真的不知道该怎么想......这里有奇怪的人:(
【问题讨论】:
-
你需要做什么?删除旧记录还是删除除最近 100 条以外的所有记录?如果你在一秒钟内获得 101 条记录会发生什么?这是否意味着你会错过第一条记录?
-
是否有 ID 或任何使行唯一的东西?
-
现在磁盘空间太便宜了,我会反对这种大小的行,不需要删除任何东西。如果您确实需要删除,我不会基于“留下这么多记录”来删除,而是“删除早于 x 日期的记录”。
-
@Kritner :我不明白你的问题,但我只能说:通常在凌晨 3:00 某处发生清理工作,通常在那个时间没有新记录到达......而且,是的,我同意应该根据日期而不是数字来删除记录:)
标签: sql sql-server tsql datetime sql-delete