删除MySQL中最旧的10行

删除MySQL中最旧的10行,mysql,Mysql,我需要一个MySQL语句从我的表中删除最早的10个条目,但是我能得到的最接近的是: DECLARE ID INT; SET ID = (SELECT CallbackID FROM callbacks ORDER BY CallbackID LIMIT 1 OFFSET 9); DELETE FROM callbacks WHERE callbackID <= ID; 如果总是至少有10个条目,这是可以的,但是如果条目数较少,则不会设置ID,因此delete语句失败

我需要一个MySQL语句从我的表中删除最早的10个条目,但是我能得到的最接近的是:

   DECLARE ID INT;
   SET ID = (SELECT CallbackID FROM callbacks ORDER BY CallbackID LIMIT 1 OFFSET 9);

   DELETE FROM callbacks WHERE callbackID <= ID;
如果总是至少有10个条目,这是可以的,但是如果条目数较少,则不会设置ID,因此delete语句失败

有什么想法吗? 谢谢

编辑: 我也试过:

   DECLARE ID INT;
   SET ID = (SELECT CallbackID FROM callbacks ORDER BY CallbackID LIMIT 1 OFFSET 9);

   if ID IS NOT NULL THEN

   DELETE FROM callbacks WHERE callbackID <= ID;
   END IF;
那么:

DELETE FROM callbacks ORDER BY CallbackID LIMIT 10;
那么:

DELETE FROM callbacks ORDER BY CallbackID LIMIT 10;


在设置之后,您只需要一个if语句来检查ID是否设置,if yes do query,else do other or nothing。

在设置之后,您只需要一个if语句来检查ID是否设置,if yes do query,else do other or nothing。

OP想要按日期排序,因此可以推测是按[日期列]排序DESC会坐在查询的最后吗?@mimitech你不想按。。。描述,而不是ASC?@njk:不;最老的会有最低的ID。或者我假设是这样。它只是做了与原始查询相同的事情。@minitech抱歉,我没有看到。疲惫的头脑往往会忽略最明显的事情。@Jon:你确定你在使用MySQL吗?ORDER BY仅在版本4.0.0之后才受支持,但它似乎一直都受支持…OP希望按日期订购,因此推测ORDER BY[date column]DESC会很好地位于查询的末尾?@mimitech您不想按。。。描述,而不是ASC?@njk:不;最老的会有最低的ID。或者我假设是这样。它只是做了与原始查询相同的事情。@minitech抱歉,我没有看到。疲惫的头脑往往会忽略最明显的事情。@Jon:你确定你在使用MySQL吗?ORDER BY仅在版本4.0.0之后才受支持,但它似乎一直都支持LIMIT…尝试过这一点,但某些版本的MySQL不支持LIMIT unfortunatelyTried,但某些版本的MySQL不支持LIMIT unfortunatelyIF something>0,然后选择。。来自app_用户,其中id=1结束IF;还是说我完全不在考虑范围内?所以请把这一点写进你的答案中——这就是为什么它是一个完整的答案:这是一个很好的答案,不需要投反对票。感谢用户,我试着查看我编辑的答案。不幸的是,它抱怨安全模式,什么也没做!如果某项内容>0,则选择。。来自app_用户,其中id=1结束IF;还是说我完全不在考虑范围内?所以请把这一点写进你的答案中——这就是为什么它是一个完整的答案:这是一个很好的答案,不需要投反对票。感谢用户,我试着查看我编辑的答案。不幸的是,它抱怨安全模式,什么也没做!
DELETE FROM callbacks ORDER BY callbackID DESC LIMIT 10