/ / SQLテーブルから最後の25レコードを選択する - mysql、sql

SQLテーブルから最後の25レコードを選択する - mysql、sql

最後に入力した25件のレコードを再学習し、残りのレコードをIDで削除します。

DELETE * FROM list
WHERE id NOT IN
(
SELECT *
FROM (
SELECT *
FROM "list"
ORDER BY id DESC LIMIT 25
) as rows
)

回答:

回答№1は1
DELETE *
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);

私は最初にいくつかのダミーデータでこれをテストしますが、私はそれがあなたが望むことをすると信じています。