如何删除 SQL Server 2008 R2 数据库中的最后 N 条记录? [复制]

Posted

技术标签:

【中文标题】如何删除 SQL Server 2008 R2 数据库中的最后 N 条记录? [复制]【英文标题】:How to delete last N records in SQL Server 2008 R2 database? [duplicate] 【发布时间】:2017-09-30 22:32:35 【问题描述】:

我有一个 SQL Server 2008 R2 Express 数据库,其中包含一个包含行的表。当数据库大小变成大约 10gb 时,我需要从该表中清除最后 N 条记录。

我需要这样的东西,但对于 SQL Server

DELETE FROM mytable 
WHERE ROWID IN (SELECT ROWID FROM mytable ORDER BY ROWID ASC LIMIT 100)

谢谢。

数据库结构:

strSQL = "SELECT DateAndTime
                ,TagName
                ,Val
                ,SetPoint
                ,Limit_H
                ,Limit_L
                ,Result 
          FROM dbo.Statistic...."

UPD。它不依赖于“DateAndTime”,因为我必须释放空间,但据我了解,1 天(或 1 周)可能只包含 1 条记录......所以我需要删除 200K 记录。

【问题讨论】:

请参阅ROW_NUMBER,也许 - 仍然应该有一个正确定义的顺序。可以尝试依赖索引顺序,ymmv;最好选择业务订单 - DateAndTime,也许? 查看here ROW_NUMBER 的示例。 “最后一个”是什么意思。按照什么命令? 【参考方案1】:

给你:

DELETE FROM mytable 
WHERE %%physloc%% IN (SELECT TOP 100 %%physloc%% AS RN FROM mytable ORDER BY RN DESC);

【讨论】:

以上是关于如何删除 SQL Server 2008 R2 数据库中的最后 N 条记录? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何破解windows server 2008r2远程连接数2个的限制

如何在 SQL Server 2008 R2 中的所有行中删除只有一个值的多列

server 2008 r2能安装sql server 2016吗?

如何将所有数据库(快速)自 sql server 2008 express 传递到 sql server 2008 R2(无 express)

sql 2008 r2 在sql 2008上兼容么

删除数据库 SQL Server 2008 R2 Express Edition - 异常