$result = mysql_query("SELECT id FROM tablename WHERE user_id=123 ORDER BY id DESC LIMIT 100,1");
$fetch = mysql_fetch_assoc($result);
mysql_query("DELETE FROM tablename WHERE id <".$fetch['id']." AND user_id=123");
你說說選擇日期,總是試着去找最快的專欄。你的id
列的probally是auto_increment,並有一個索引,這使得它成爲一個快速列。日期值probally沒有索引,因此速度較慢
小旁註:我使用的是mysql_函數,你應該使用mysqli_功能
我嘗試過這些,但他們不正常工作(對我來說):
DELETE FROM tablename WHERE user_id=123 LIMIT 100,9999
我想嘗試另一種方式是這樣的:
DELETE FROM tablename WHERE user_id=123
WHERE id NOT IN(SELECT id FROM tablename WHERE user_id=123 ORDER BY id DESC LIMIT 100)
但子查詢不支持限制(可能是較新版本做的,但分Ë犯規)
馬林Sagovac提出這一點,但對我來說也沒有工作:
DELETE FROM tablename WHERE user_id=123 LIMIT 10 OFFSET 100
我想你應該在應用層處理邏輯(所以,PHP) – Strawberry
嘗試這樣的查詢,'SELECT ip_address FROM table WHERE user ='username'ORDER BY id DESC LIMIT BY(0,100)'Note:Not tested – Fallen
以某種方式是的,但是使數據庫處理這種操作可能會更好地提高性能。在這種情況下,它並不是真的需要將它提取到php – Martijn