Neusten einträge behalten ? Rest löschen ?
AndreasN
- datenbank
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
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
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