0

テーブルから最も古い10個のエントリを削除するには、MySQLステートメントが必要ですが、取得できる最も近いものは次のとおりです。

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

4 に答える 4

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 に答える
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 に答える