Mysql 删除所有旧条目

Mysql 删除所有旧条目,mysql,sql,Mysql,Sql,您好,我需要先删除所有旧条目并保存20个,但我的代码有问题: DELETE FROM info WHERE account='".$id."' ORDER BY id DESC LIMIT 20,x 我需要用最后一个ID替换x 如何获取最后一个ID?您可以通过最后一个条目排序的20,1限制获取需要删除的ID SELECT account FROM `info` ORDER BY account DESC LIMIT 20,1 因此,如果您有23条记录,结果将是3,这是您需要从中删除的ID

您好,我需要先删除所有旧条目并保存20个,但我的代码有问题:

DELETE FROM info WHERE account='".$id."' ORDER BY id DESC LIMIT 20,x 
我需要用最后一个ID替换
x


如何获取最后一个ID?

您可以通过最后一个条目排序的
20,1
限制获取需要删除的ID

SELECT account FROM `info` ORDER BY account DESC LIMIT 20,1
因此,如果您有23条记录,结果将是3,这是您需要从中删除的ID

DELETE FROM info WHERE account <= '" . $id . "'

DELETE FROM info WHERE account如果id是一个增量字段,即最后一个id总是最大的,你可以简单地使用“SELECT MAX(id)…”你的意思是想保留20个最新的条目,其中有20个最高的id,然后删除其余的条目吗?你考虑过了吗。你多久运行一次?如果只有18个账户呢。添加一个,然后运行它?是的,我需要按帐户删除最后20个条目,如果条目数>20,我现在有
选择id FROM info WHERE account='“$id.”“ORDER by id DESC LIMIT 20,20-delete FROM info WHERE account='“$id.”并且idI很想阅读本次大奖赛的用例,您建议的是另一种解决方案。@ApulGupta更像是这样一种解决方案,他不需要从需要删除的ID中查找,因为它会自动检查表并获取他需要删除的ID,如果记录少于20条,它将不返回任何内容,因此他可以避免执行删除操作。我还相信它将只查询和读取最后几个ID,而不是遍历整个表?是的,这个解决方案可以工作,但对ajax调用有好处吗?我刚刚编辑了一个查询的
LIMIT 20,20
,如果ID不为空,则执行delete@user3649872它必须是
20,1
,因为您只需要从中删除
ID
。至于AJAX,这取决于您查询它的频率和代码使用它的方式,我不知道。@ApulGupta
EXPLAIN
说它将只读取21个条目,这意味着它将从表的末尾读取,我想这对他的情况是最佳的?