phpbar.de logo

Mailinglisten-Archive

[dbs] Tabelle (elegant) aufräumen

[dbs] Tabelle (elegant) aufräumen

Sven Eichler phpbar at koalashome.de
Mit Okt 31 17:05:59 CET 2007


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