MySQL - alte nachrichten löschen (durch anzahl?)



  • Brauche für meine seite eine MySQL-anfrage, die die alten nachrichten (also, zeilen) löscht. Die Eintragszeit ist als unix-timestamt in einer Col eingegeben (als integer).

    Aber: es müssen nicht die nachrichten gelöscht sein, die vor bestimmten zeitpnkt geschrieben wurden, sondern es müssen die ältesten gelöscht sein, so, dass nur 25 nachrichten bleiben.

    Wie kann man das machen?

    Danke im voraus 🙂



  • MySQL kann sowas:

    DELETE FROM tabelle ORDER BY zeitstempel LIMIT 25

    EDIT: Hups, habs leider verdreht 😞



  • jo, ist noch nicht ganz das...



  • Na ja, Du mußt das ganze nur noch anpassen...

    DELETE FROM tabelle
    WHERE NOT (id IN (
      SELECT 
      id 
      FROM tabelle
      ORDER BY zeitstempel DESC
      LIMIT 25))
    

    Hab kein mySQL, wenn Deine Version Subselects zuläßt und die Limit-Syntax so richtig ist, sollte das funktioniern



  • Joe_M. schrieb:

    Na ja, Du mußt das ganze nur noch anpassen...

    DELETE FROM tabelle
    WHERE NOT (id IN (
      SELECT 
      id 
      FROM tabelle
      ORDER BY zeitstempel DESC
      LIMIT 25))
    

    Hab kein mySQL, wenn Deine Version Subselects zuläßt und die Limit-Syntax so richtig ist, sollte das funktioniern

    cool, werd das heute ausprobieren - danke schön!


Anmelden zum Antworten