Löschen alter posts per Cronjobs!
Bernd Rössner
- datenbank
-1 Ludger1 Sven Rautenberg
Hi leute...
...ich habe ein problem und zwar habe ich ein news script, das aber nur die jeweils 100 neusten beiträge anzeigen soll - eigentlich ganz leicht zu lösen mit:
LIMIT 100
per mySQL!
Nur will ich die restlichen aus meiner DB löschen! und zwar per cronjobs! ich weiß aber nicht wie ich das umsetzen kann! wie soll ich denen klar machen immer nur 100 posts zu behalten und überflüssige zu löschen!
würde mich für ein paar tipps sehr dankbar zeigen!
mfg bernd
Hi,
würde mich für ein paar tipps sehr dankbar zeigen!
Unterabfragen und der IN-Operator?
DELETE
*
FROM
USERS
WHERE
(User_Name NOT IN
(
SELECT TOP 100
User_Name
FROM
USERS
WHERE
(User_Name LIKE '%Ludger%')
)
)
Gruss,
Ludger
Moin!
Hi,
würde mich für ein paar tipps sehr dankbar zeigen!
Unterabfragen und der IN-Operator?
Zitat aus dem Originalposting:
"per mySQL!"
Und damit kannst du deine Abfrage schon direkt wieder auf den Müll schicken, das ist Microsoft-SQL.
- Sven Rautenberg
Hi,
Und damit kannst du deine Abfrage schon direkt wieder auf den Müll schicken, das ist Microsoft-SQL.
aeeh, ja, aber man nennts T-SQL. ('T' steht fuer coole Transaktionen und so)
Und das Ersetzen der TOP-Klausel durch die LIMIT-Klausel und das Ersetzen des LIKE-Ausdrucks traue ich dem Mann schon zu.
Spricht sonst irgendwas gegen Unterabfragen und die Verwendung des IN-Operators?
Gruss,
ludger
Moin!
Spricht sonst irgendwas gegen Unterabfragen und die Verwendung des IN-Operators?
Die Fähigkeit eines durchschnittlich zu erwartenden MySQLs. Üblich ist (auch wegen der Lizenz) bei Hostern Version 3.23.
- Sven Rautenberg
Moin!
Nur will ich die restlichen aus meiner DB löschen! und zwar per cronjobs! ich weiß aber nicht wie ich das umsetzen kann! wie soll ich denen klar machen immer nur 100 posts zu behalten und überflüssige zu löschen!
Wäre es nicht schlauer, exakt dann, wenn eine neue Meldung dazukommt, die älteste Meldung zu löschen? Dann sparst du dir die Sache mit den Cronjobs.
Ansonsten würde ich vorschlagen:
SELECT count(*) FROM tabelle;
-> ergibt eine Zahl.
DELETE FROM tabelle ORDER BY id LIMIT (zahl - 100);
id sei hier ein eindeutiges Kriterium der News, welches aufsteigend (aber ggf. auch mit Lücken) vergeben wird. Alternativ würde sich als Sortierkriterium ein Datum (geordnet von alt nach neu) anbieten.
- Sven Rautenberg