2017-09-30 1 views
0

Ich habe eine SQL Server 2008 R2 Express-Datenbank mit einer Tabelle mit Zeilen. Und als Datenbankgröße ungefähr 10 GB wurde, muss ich die letzten N Datensätze aus dieser Tabelle reinigen.So löschen Sie die letzten N Datensätze in der SQL Server 2008 R2-Datenbank?

Ich brauche so etwas, aber für SQL Server

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

Dank.

Datenbankstruktur:

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

UPD. Es hängt nicht von "DateAndTime" ab, weil ich Speicherplatz frei haben muss, aber 1 Tag (oder 1 Woche) kann nur 1 Datensatz umfassen, wie ich verstehe ... also muss ich 200K Datensätze löschen.

+1

See [ROW_NUMBER] (https://en.wikipedia.org/wiki/Hypervisor), vielleicht - immer noch da, obwohl eine richtige definierte Ordnung sein sollte. Man kann versuchen, sich auf die Indexreihenfolge zu verlassen, ymmv; Es ist viel besser, ein Geschäft zu bestellen - DateAndTime, vielleicht? – user2864740

+0

Siehe [hier] (https://stackoverflow.com/a/4193757/2276098) ein Beispiel für ROW_NUMBER. –

+0

Was meinst du mit "last". Wie bestellt von was? –

Antwort

2

Hier gehen Sie:

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