我有一個包含1000條記錄的數據庫。 我試圖創建一個SQL語句,所以如果記錄數增長到1000以上,那麼最舊的記錄被刪除(即1000以上的新記錄'替換'最舊的記錄)。 我正在使用SQLite,但我認爲通常的SQL語法將適合在這裏。從數據庫中刪除最舊的記錄
回答
如果使用自動遞增字段,你可以很容易地編寫這刪除最早的100條記錄:
DELETE FROM mytable WHERE id IN (SELECT id FROM mytable ORDER BY id ASC LIMIT 100)
或者,如果沒有這樣的字段存在,使用ROWID
:
DELETE FROM mytable WHERE ROWID IN (SELECT ROWID FROM mytable ORDER BY ROWID ASC LIMIT 100)
或者,只留下最新的1000條記錄:
DELETE FROM mytable WHERE ROWID IN (SELECT ROWID FROM mytable ORDER BY ROWID DESC LIMIT -1 OFFSET 1000)
謝謝,但我需要一個...限制-1抵消1000 – Seven 2013-04-08 18:50:00
我也在考慮使用這個,但不會MySQL使用以前刪除的ID最終所以這不會工作了?由於ID = 1將變爲可用,因此將創建一個ID = 1的較新行,然後將首先刪除該行。 – NaturalBornCamper 2017-06-26 08:42:41
假設您的表具有主鍵和時間戳指示何時插入記錄)的列,您可以使用查詢沿
delete from tableToDeleteFrom
where tablePK in
(select tablePK
from tableToDeleteFrom
where someThresholdDate <= @someThresholdDate)
行對於刪除所有記錄除第一個記錄(最小/最大編號),可以使用:
SET @ls AS INT
SELECT @ls = MIN(id) FROM DATA
DELETE FROM DATA WHERE id <> @ls
它真的回答了這個問題嗎? – voromax 2013-11-07 21:27:15
- 1. 從localStorage刪除最舊的記錄
- 2. 關於從數據庫中刪除舊記錄的問題
- 3. 從數據庫中刪除舊記錄(Postgres/Rails)
- 4. 如何從數據庫表中自動刪除舊記錄?
- 5. 應該從數據庫中刪除舊記錄?
- 6. Vaadin從數據庫中刪除記錄
- 7. 從數據庫中刪除記錄
- 8. 從數據庫中刪除記錄
- 9. 從數據庫中刪除記錄
- 10. 從數據庫中刪除記錄
- 11. 從MySQL數據庫中刪除記錄
- 12. 如何從mysql數據庫刪除舊記錄
- 13. 從數據庫中刪除記錄時的最佳做法
- 14. 刪除sqlite數據庫中的舊記錄android
- 15. 從表中刪除較舊的記錄
- 16. 從gridview刪除記錄,但不是從數據庫中刪除記錄
- 17. 從sqlite數據庫刪除記錄
- 18. 刪除聊天記錄從數據庫
- 19. 從MDF數據庫刪除記錄
- 20. 從最近一批記錄中刪除最舊日期
- 21. 刪除數據庫中的記錄cakephp
- 22. 刪除數據庫中的記錄
- 23. 從Access數據庫中刪除記錄,刪除時出錯
- 24. 從數據庫中選擇比最新的100條記錄還舊的記錄
- 25. 從核心數據中刪除舊記錄
- 26. 刪除舊的記錄
- 27. 從MySQL刪除舊記錄的問題
- 28. 如何從git存儲庫中刪除舊的歷史記錄?
- 29. 每個ID刪除比最新記錄舊2天的記錄
- 30. SQLite刪除數據庫中最後25%的記錄
如果包含一些表模式詳細信息,則可能會得到更多答案。 – serg10 2010-09-08 11:29:47
您可能想要提供更多信息。像你有專欄的時間戳嗎?該ID是GUID還是自動增量?您的目標是要刪除所有年齡更大的X日期還是1000條記錄的限制?或刪除這些記錄的原因是什麼?那麼我們可以更好地回答你的問題。 – 2010-09-08 11:31:57
哦,你的主要關鍵字是什麼?或者你甚至有一個? – 2010-09-08 11:32:38