MySQL LÖSCHEN alle, aber die Letzte X Einträge

Ich habe ein script, welches jede Stunde auf meine php-Seite. In diesem Skript möchte ich eine Art MySQL-Abfrage zu löschen jeden Datensatz aus einer Tabelle aber sagen, dass die letzten 50.

Wie würde ich so etwas tun?

// pseudo code: like this?
DELETE from chat WHERE id = max (ID - 50) 
  • Können Sie fügen Sie eine timestamp-Feld auf Ihren Tisch?
  • Wenn Sie Ihre ID-Spalte ist eine identity-Spalte mit autoincrement-1, könnten Sie tun somthing so: DELETE FROM chat WHERE ID NOT IN(SELECT TOP 50 ID FROM chat ORDER BY ID DESC)
  • Ich habe ein datetime-Feld
  • Verwenden Sie In diesem Fall: DELETE FROM chat WHERE datecol NOT IN(SELECT TOP 50 datecol FROM chat ORDER BY datecol DESC)-- SQL Server DELETE FROM chat WHERE datecol NOT IN(SELECT datecol FROM chat ORDER BY datecol DESC LIMIT 50) --MySQL
  • Ich denke, Sie sollten löschen nach einer Zeitspanne (zwischen x und x), sondern die Anzahl der Datensätze. Gibt es irgendein Grund, warum es die letzten 50, sondern als eine Zeit Periode/Spanne?
  • #1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
  • möglich, Duplikat der SQL-Abfrage: Löschen Sie alle Datensätze aus der Tabelle mit Ausnahme der neuesten N?

InformationsquelleAutor user1022585 | 2012-01-16
Schreibe einen Kommentar