0

我需要一个 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 未设置,因此删除语句失败。

有任何想法吗?谢谢

编辑:也试过这个:

   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;
4

4 回答 4

1
DELETE FROM callbacks ORDER BY callbackID DESC LIMIT 10
于 2012-08-29T15:54:01.043 回答
1

在 之后SET,您只需要一个 if 语句来检查是否ID设置了,如果是则进行查询,否则执行其他操作或不执行任何操作。

于 2012-08-29T15:54:05.320 回答
1
DELETE FROM callbacks 
WHERE callbackID in (
    SELECT CallbackID 
    FROM callbacks 
    ORDER BY CallbackID LIMIT 10
)
于 2012-08-29T15:52:39.147 回答
1

怎么样:

DELETE FROM callbacks ORDER BY CallbackID LIMIT 10;

是的,它有效:)

于 2012-08-29T15:52:43.733 回答