如果count大于20,如何从表中删除

jos*_*eph 3 mysql

我有一个mysql表,我需要在添加其他记录之前只包含20条最新记录.每天都会添加新行,因此我希望首先删除任何大于最早允许的记录.

该表包含一个自动增量"id"列,因此我可以轻松确定哪个是最早的记录.

谢谢你的帮助.

Bol*_*ock 5

您可以LIMIT在查询中使用关键字指定偏移量,以保留最新的20行.然而,根据MySQL的文档,没有简单的方法可以将偏移限制为最后一个; 相反,他们建议:

要从特定偏移量检索所有行直到结果集的末尾,可以使用一些大数字作为第二个参数.

所以这个SQL应该可以解决这个问题:

DELETE FROM table ORDER BY id DESC LIMIT 20, 18446744073709551615;
Run Code Online (Sandbox Code Playgroud)

  • "DELETE"语句的"LIMIT"中没有"OFFSET"参数. (9认同)