2017-09-30 3 views
0

私はSQL Server 2008 R2 Expressデータベースを1つのテーブルに行があります。そして、データベースサイズが約10GBになったら、このテーブルからN個の最後のレコードをクリーニングする必要があります。SQL Server 2008 R2データベースの最後の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レコードを削除する必要があります。ここで

+1

参照を[ROW_NUMBER](https://en.wikipedia.org/wiki/Hypervisor)、おそらく - まだかかわらず、適切に定義された順序があるはずです。インデックスの順序に頼ることができます。おそらく、ビジネス注文 - DateAndTime、おそらくそれを選択する方が良い? – user2864740

+0

[こちら](https://stackoverflow.com/a/4193757/2276098)のROW_NUMBERの例を参照してください。 –

+0

「最後」とはどういう意味ですか?何から注文された? –

答えて

2

あなたが行く:

DELETE FROM mytable 
WHERE %%physloc%% IN (SELECT TOP 100 %%physloc%% AS RN FROM mytable ORDER BY RN DESC); 
関連する問題