AndreasN: Neusten einträge behalten ? Rest löschen ?

Holla,

hab da folgendes Problemchen:

msgid | senderid | recipientid | sendtime ..... usw

So sieht meine Tabelle mit MSG´s aus. Jetzt würde ich gerne von jedem die neusten 30 MSG´s behalten und den rest löschen ( User können dann anhand der "recipientid" verglichen werden )

Mein Ansatz sieht so aus:

my $sth = $dbh->prepare(q{DELETE FROM message WHERE recipientid=? LIMIT 30}) || die "Anweisung kann nicht vorbereitet werden: $DBI::errstr";......

Er löscht jetzt auch die MSG´s bis auf die letzten 30. Allerdings heisst das noch lange nicht dass es die NEUSTEN 30 sind. Denn wenn man in der Zwischenzeit die Tabelle nach einem anderen Kriterium sortiert hat, ist es dahin mit der Zeitlichen Ordnung :-(

Deshalb meine Frage: Wie kann ich das in das Statement mit einbauen , dass er den sendtime - Zeitstempel mit berücksichtigt ??

Bin für jeden Tipp dankbar.
Vielen Dank im voraus

MfG
AndreasN

--
Wer lesen kann ist klar im Vorteil
  1. Hallo,

    DELETE FROM message WHERE recipientid=? LIMIT 30

    Deshalb meine Frage: Wie kann ich das in das Statement mit einbauen , dass er den sendtime - Zeitstempel mit berücksichtigt ??

    MySQL kennt auch bei DELETE die ORDER BY Klausel:
    http://www.mysql.com/doc/en/DELETE.html

    Falls Du ein anderes DBMS verwendest, verrate uns bitte, welches!

    Gruesse,

    Thomas

    1. Holla,

      MySQL kennt auch bei DELETE die ORDER BY Klausel:
      http://www.mysql.com/doc/en/DELETE.html

      Uarghs :-(

      Natürlich das ist es ... ich hatte das mal getestet, hatte da allerdings auch als limit: LIMIT 30,165 stehen deswegen kam immer ein Error und ich dachte das wäre wegen dem Order BY :-(

      Vielen Dank ich werd mir das gleich mal zu gemüte führen ;)
      MfG
      AndreasN

      --
      Wer lesen kann ist klar im Vorteil