【问题标题】:How to delete last N records in SQL Server 2008 R2 database? [duplicate]如何删除 SQL Server 2008 R2 数据库中的最后 N 条记录? [复制]
【发布时间】: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 的示例。
  • “最后一个”是什么意思。按照什么命令?

标签: sql sql-server sql-server-2008-r2


【解决方案1】:

给你:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多