Laden...

MySQL: Daten einer Tabelle löschen, aber die 50. neusten behalten

Letzter Beitrag vor 18 Jahren 3 Posts 1.624 Views
MySQL: Daten einer Tabelle löschen, aber die 50. neusten behalten

Hallo zusammen,

ich möchte gerne aus einer Tabelle Daten löschen. In dieser Tabelle stehen userIDs und ich habe eine Spalte mit einem Timestamp (kein Datentyp der MySQL-Datenbank, soweit ich weiß, sondern die Sekunden seit 1970 (von PHP generiert)).

Jetzt möchte ich gerne alle Datensätze löschen, von jedem User aber die 50 neusten (nach Timestamp), oder einfach die 50 letzten über lassen. Das käme aufs gleiche raus bzw. ist hier nicht so wichtig.

Hat da jemand eine Idee zu dem SQL-Statement. Ich komme da grad nicht drauf, die ich die 50 aktuellsten Datensätze über lassen kann.

Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

Ich weiß nicht ob es funktioniert, aber etwa so:

DELTE FROM tabelle ORDER BY timestampspalte LIMIT (SELECT COUNT() tabelle - 50)

Holla, ich würds mit nem Multidelete und nem Join probieren.
Sollten dort allerdings weniger als 50 Einträge sein, sind diese auch flöten.


DELETE tbl1 FROM tbl1
INNER JOIN (
  SELECT userID FROM tbl1 ORDER BY timestampCol DESC LIMIT 0,50) AS delRange
ON (tbl1.userID = delRange.userID)

Alternativ vielleicht ne Stored Procedure?