2011-07-11 71 views
1

我的表:如何刪除超過50個計數的所有行?

_id | state | timeStamp 

我想選擇所有的狀態= 0,以便按時間戳結果行。我想要刪除所有通過特定限制的項目,比如50行。

*從本質上講,我不希望這是超過50行與狀態= 0

我怎樣才能做到這一點?我試着寫一個,但我發現有點失落......

DELETE FROM表WHERE(狀態= 0)令按時間戳

+0

所以你想截斷你的表50行? –

+0

我不確定我明白你的意思是什麼意思?我假設行是對的?本質上,我不希望有超過50行的狀態= 0 – Jona

+0

對不起,是的行。 –

回答

1

使用NOT IN語句子查詢:
DELETE FROM table WHERE state = 0 AND _id NOT IN(SELECT _id FROM table WHERE state = 0 ORDER BY timeStamp LIMIT 50);

它是什麼選擇所有行state = 0,然後把已經state = 0所有訂貨時時間戳

+0

是的,當我嘗試時,我基本上迷失在子查詢中......所以我明白你在那裏有什麼,但感覺就像重複了第一個和最後一個SELECT命令。這意味着什麼? – Jona

+0

對不起,減號錯誤,我在尋找正確的查詢。給我一分鐘:) –

+0

@尼克拉斯不應該使用NOT IN而不是IN? –

1

你可以找到時間戳是做什麼用的第50行第50列,然後做刪除statem對於狀態爲0且時間戳比您找到的時間戳更早(或更新,以適用於此處)的行爲例。

+0

感謝您的方法的想法,我認爲它使完整的感覺。我仍然不確定如何編寫複雜的DELETE查詢。基本上希望在這個論壇的幫助下,我可以通過一個查詢來了解它的工作原理。 :) – Jona