[MySQL/PHP]Löschfuntion

Wie kann ich es mit PHP und MySQL anstellen das nur die letzten X Einträge in einer Tabelle bestehen bleiben aber der Rest gelöscht wird. Finde mal wieder in der Hilfe nichts, da ich keine Fachbegriffe dafür kenne.

du könntest ein script schreiben, das alle ausließt.
dann speicherst du die letzten x beiträge.
danach löschst du alle einträge in der tabelle.
und zuletzt lässt du die letzten x beiträge wieder eintragen.

:slight_smile:

[quote=“lenz”]du könntest ein script schreiben, das alle ausließt.
dann speicherst du die letzten x beiträge.
danach löschst du alle einträge in der tabelle.
und zuletzt lässt du die letzten x beiträge wieder eintragen.

:slight_smile:[/quote]
Gibts wirklich keine einfachere Lösung, den das könnte wohl ein größeres Stück arbeit werden.

Im Prinzip ist das ein Klacks. Ein Script, dass mit weniger als 10 Zeilen auskäme - wenn du noch willst dass dir angezeigt wird ob es erfolgreich war und was gelöscht wurde vielleicht 20…

Auch DELETE kennt ORDER BY und LIMIT.

Ob es überhaupt sinnvoll ist, zu Löschen, wäre natürlich noch eine andere Frage.
Wenn man immer nur die letzten X Datensätze anzeigen will, dann liest mal halt nur die aus.
Eine Historie vorzuhalten, kann je nach Anwendungsfall ja auch ganz sinnvoll sein.

[quote=“chrisb”]Auch DELETE kennt ORDER BY und LIMIT.

Ob es überhaupt sinnvoll ist, zu Löschen, wäre natürlich noch eine andere Frage.
Wenn man immer nur die letzten X Datensätze anzeigen will, dann liest mal halt nur die aus.
Eine Historie vorzuhalten, kann je nach Anwendungsfall ja auch ganz sinnvoll sein.[/quote]

Wie würde der Befehl dann aussehen wenn ich bsw. 20 Datensätze stehen lassen will? Die Tabellen von mir haben alle den Index id mit auto_increment.

Stichworte hast du bekommen, also informiere dich bitte.

hi,

du müsstest einfach nur ORDER BY benutzen um das zu sortieren, was Du eigentlich stehen lassen willst - mit LIMIT setzt Du dann fest, ab wo und bis wohin Du dann die Daten löschen willst. zB. LIMIT 0, 20 würde die ersten 20 löschen, LIMIT 20, 50 würde die ersten 50 Resulte löschen, die da beim sortierten Ergebnis ab dem 20. Resultat anfangen :slight_smile:

zB

Aus Gründen der Kompatibilität mit PostgreSQL unterstützt MySQL auch die Syntax LIMIT zeilen OFFSET offset statt nur LIMIT zeilen, offset;

ciao

miro, du bist klasse! :hail:

mach weiter so :bp: