Halihallo Jenny
Ich würde meine MySQL Datenbank gerne automatisiert aufräumen hab allerdings nicht den richtigen Query, damit >> die letzten 30 Einträge sortiert nach Datum erhalten bleiben <<:
- Erstelle eine HEAP-Tabelle und speichere dort die ersten 30
Einträge mittels REPLACE INTO. Dann lösche die alte Tabelle
mittels DELETE FROM oldtable und speichere alle Daten der HEAP-
Tabelle wieder in der alten Tabelle.
http://www.mysql.com/doc/en/HEAP.html
http://www.mysql.com/doc/en/REPLACE.html - SELECT time FROM table ORDER BY time ASC LIMIT 29,1
DELETE FROM table WHERE time>"vorherige time in SELECT-Statement"
Beachte aber, dass dies - falls time kein PRIMARY KEY ist - nur
eine approximative Lösung ist, da ja theoretisch jede time den
selben Wert haben kann und somit gar keine Datensätze gelöscht
werden würden. Oder besser: - MySQL>4.x :
DELETE FROM table WHERE id NOT IN (
SELECT id FROM table ORDER BY time ASC LIMIT 30
) - Nun ja, falls es denn nur 30 Datensätze sind: Lies sie doch
einfach über eine 4GL-Sprache deiner Wahl aus, lösche die Tabelle
und füge die vorher ausgelesenen wieder ein...
Eine schöne Lösung kann ich nicht finden (nun, die 4 gefällt mir,
hängt jedoch von der Version des MySQL-Systems ab)...
Zusatz: Arbeite bei derartigen Geschichten und Workarounds _immer_
mit Table-LOCK, sonst gibts irreparablen Datenverlust!
ich dachte mir sowas wie:
DELETE FROM table ORDER BY time DESC LIMIT 30, 100000
^^ funktioniert leider nicht...
Dann _immer_ Fehler + Version angeben!
Viele Grüsse
Philipp