最後に入力した25件のレコードを再学習し、残りのレコードをIDで削除します。
DELETE * FROM list
WHERE id NOT IN
(
SELECT *
FROM (
SELECT *
FROM "list"
ORDER BY id DESC LIMIT 25
) as rows
)
回答:
回答№1は1DELETE *
FROM "list"
WHERE id NOT IN ( SELECT id
FROM "list"
ORDER BY id DESC
LIMIT 25 )
回答№2の場合は0
同じテーブルからの選択中に削除することは、MySQLでは許可されていません。
次のようなことを試すことができます:
SELECT @rows_to_delete:=COUNT(*)-25 FROM list;
DELETE FROM list ORDER BY id ASC LIMIT 0, @rows_to_delete;
注:これは実際のデータで実行する前にテストしてください。
回答№3の場合は0
私はあなたの質問は近いと思うが、何が必要なのか変更はサブクエリ内のidをフィルタリングするだけです。すべてを選択しないでください。これは意味をなさないためです。単一のアイテム(id)が一連の物(すべての列)に含まれていないかどうかを確認する必要があります。
次のようにクエリを変更してみてください:
DELETE FROM list
WHERE id NOT IN(
SELECT id
FROM list
ORDER BY id DESC
LIMIT 25);
私は最初にいくつかのダミーデータでこれをテストしますが、私はそれがあなたが望むことをすると信じています。