Wie müsste eine Abfrage aussehen , mit der man die DAtensätze 10 - Unendlich löschen möchte .
Habs mit Linmit probiert - geht irgendwie nicht .
Ausserdem sollten nur die neusten 10 Datensätze übrigbleiben. Das habe ich mit ORDER BY versucht .
delanfrage = "DELETE FROM tabelle_1 ORDER BY spalte1 DESC LIMIT ??,??";
thanx
DELETE FROM tabelle_1 ORDER BY spalte1 DESC LIMIT 9,(COUNT(spalte1))
Original geschrieben von Sky
DELETE FROM tabelle_1 ORDER BY spalte1 DESC LIMIT 9,(COUNT(spalte1))
Hmmm , funktioniert irgendwie nicht . Bekomme immer Fehlermeldung :
You have an error in your SQL syntax near 'ORDER BY spalte1 DESC LIMIT 9,(COUNT(spalte1))' at line 1
Woran liegt's ?
Hm, COUNT() geht offensichtlich nicht in einer LIMIT-Clause.
Mach vorher eine Abfrage
SELECT count(*) FROM tabelle_1
und bau das Ergebnis dann in ein Limit ein.
Danke , werde es gleich mal probieren .
Also irgendwie klapps nicht - scheinbar stört die ORDER BY anweisung !? Oder auch die LIMIT anweisung .
Vielleicht kanns jemand mal ausprobieren :
$anfrage = "SELECT COUNT(*) FROM tabelle1";
IF ($zahl = mysql_query($anfrage)) {
$anzahl = mysql_num_rows($zahl);
$delanfrage = "DELETE FROM tabelle1 ORDER BY datum DESC LIMIT 9,'$anzahl'";
IF ($deletenow = mysql_query($delanfrage)) {
echo "Befehl OK";
}
Else {
echo "Fehlermeldung=".mysql_error();
exit;
}
} Else {
echo "Fehlermeldung=".mysql_error();
exit;
}
Hmm bin mehr oder weniger am ende - habe jetzt einige situationen durchprobiert aber es will irgenwie nicht klappen :(
Thanx Paddy
$anzahl = mysql_num_rows($zahl) - 10;
$delanfrage = "DELETE FROM tabelle1 ORDER BY datum DESC LIMIT 9,$anzahl";
Es kommt immernoch die gleiche Fehlermeldung :
You have an error in your SQL syntax near 'ORDER BY datum DESC LIMIT 9,1' at line 1
Irgendwas stört da .
Hat sich da schon was neues ergeben?
order by in Delete? Das geht nicht!
Nee hat sich noch nicht gekärt :(
MelloPie
06-01-2002, 12:08
vielleicht solltest Du das Datum des letzten zu behaltenden Datensatz holen:
zB "select datum from tbl order by datum limit 9,1"
So jetzt hast Du das den 10. neuesten datensatz
und jetzt machste
"DELETE from tbl where datum > 'Ergebnis der 1. Query'"
Das mit dem SELECT funzt gut.
$nrentry = mysql_result(mysql_query("SELECT COUNT(*) AS TOTAL FROM $maintab", $db), 0);
if($nrentry >= $numofposts)
{
$query = "SELECT * FROM $maintab ORDER BY date LIMIT 0,".($nrentry-$numofposts)."";
$result = mysql_query($query, $db);
if($result)
{
while($data = mysql_fetch_array($result))
{
$query = "DELETE FROM $maintab WHERE date = ".$data['date']."";
mysql_query($query, $db);
};
};
};
Wenn jemand noch was besseres hat, bitte posten!
Mfg PAB
@MelloPie - Super Idee - so müßte es eigentlich gehen