繁体   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