簡體   English   中英

如果count大於20,如何從表中刪除

[英]How to delete from table if count is greater than 20

我有一個mysql表,我需要在添加其他記錄之前只包含20條最新記錄。 每天都會添加新行,因此我希望首先刪除任何大於最早允許的記錄。

該表包含一個自動增量“id”列,因此我可以輕松確定哪個是最早的記錄。

謝謝你的幫助。

您可以在查詢中使用LIMIT關鍵字指定偏移量,以保留最新的20行。 然而,根據MySQL的文檔,沒有簡單的方法可以將偏移限制為最后一個; 相反,他們建議:

要從特定偏移量檢索所有行直到結果集的末尾,可以使用一些大數字作為第二個參數。

所以這個SQL應該可以解決這個問題:

DELETE FROM table ORDER BY id DESC LIMIT 20, 18446744073709551615;

使用mysql 5,您無法在刪除語句中使用偏移量。 進一步閱讀: http//dev.mysql.com/doc/refman/5.0/en/delete.html

我已設法使用以下技術來實現保留一定數量的最新記錄。 mySQL子查詢限制

delete語句沒有offset 請參閱https://stackoverflow.com/a/8303440/2576076 ,它提供了一個很好的解決方案。

使用DELETEORDER BYLIMIT

DELETE FROM MyTable
ORDER BY MyTable.id DESCENDING
LIMIT 20,18446744073709551615;

這將留下具有最​​大id的20個記錄並刪除其余記錄。

為什么不保持所有記錄不受影響?
這是數據庫的發明。 如果你只想保留最新的數據,你可能需要另一個存儲空間,比如memcache

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM