Mailinglisten-Archive |
Hallo Ich möchte eine Tabelle rein mit MySQL Boardmittel "elegant" aufräumen. Gegeben: MySQL 4.0.24 (ein Update auf eine höhere Version ist derzeit nicht möglich, daher keine Subselects) Beispiel-Tabelle: id id_content content user time del 1 leer Content 1 0 1038953700 0 2 test Content 2 3 1038953815 0 3 test Content 3 6 1038953712 0 5 test Content 4 16 1038953714 0 7 leer Content 5 1 1038953814 0 Frage: Wie kann ich alle Zeilen löschen so das 'id_content' mit dem höchsten 'time' jeweils nur einmal vorhanden ist. Aus dem Beispiel müssten also diese zwei Zeilen übrig bleiben: id id_content content user time del 2 test Content 2 3 1038953815 0 7 leer Content 5 1 1038953814 0 Mein derzeitiger Weg führt über eine zweite (temporäre) Tabelle in die ich alle 'time'-Werte schreibe gruppiert nach 'id_content' ("testtime" enthält nur die Spalte 'time2'): INSERT INTO testtime (`time2`) SELECT MAX( `time` ) FROM `testcontent` GROUP BY `id_content` Danach noch folgende Querys: UPDATE `testcontent`, `testtime` SET `testcontent`.`del` = 1 WHERE `testcontent`.`time` = `testtime`.`time2`; DELETE `testcontent` FROM `testcontent` WHERE `testcontent`.`del` = 0; UPDATE `testcontent` SET `testcontent`.`del` = 0; Aber das muss doch auch einfacher gehn, oder? -- Sven
php::bar PHP Wiki - Listenarchive