![](/img/trans.png)
[英]How to delete rows in Table1 where COUNT of WHERE in Table2 is greater than 0?
[英]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 ,它提供了一個很好的解決方案。
使用DELETE
和ORDER BY
和LIMIT
:
DELETE FROM MyTable
ORDER BY MyTable.id DESCENDING
LIMIT 20,18446744073709551615;
這將留下具有最大id
的20個記錄並刪除其余記錄。
為什么不保持所有記錄不受影響?
這是數據庫的發明。 如果你只想保留最新的數據,你可能需要另一個存儲空間,比如memcache
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.