Jeg har 29 rækker i tabellen, men ikke engang denne får slettet nogle af dem:
mysql_query("DELETE FROM chat ORDER BY dato DESC LIMIT 5, 50");
Jeg tror ikke man kan bruge LIMIT i en delete!?
If an ORDER BY clause is used (available from MySQL 4.0.0), the rows will be deleted in that order. This is really only useful in conjunction with LIMIT. For example:
DELETE FROM somelog
WHERE user = 'jcole'
ORDER BY timestamp
LIMIT 1
This will delete the oldest entry (by timestamp) where the row matches the WHERE clause.
Dette er taget direkte fra MySQL online dokumentationen.
Man kan dog desværre ikke anvende LIMIT på samme måde som man kan ved et SELECT, idet LIMIT kun accepterer et eneste argument... antallet af rækker der skal slettes. Man kan altså ikke anvende noget offset... SORRY
Det er altså ikke muligt, at gøre dette i et SQL udtryk i MySQL, men det er der også så meget andet smart som ikke er... du bliver nødt til at gøre det over flere queries, eks.
$r = mysql_query("SELECT * FROM chat");
$num = mysql_num_rows($r);
$r = mysql_query("DELETE FROM chat ORDER BY dato LIMIT " + ($num-5));