/ / изберете последните 25 записа от SQL таблицата - mysql, sql

изберете последните 25 записа от SQL таблицата - 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 )

0 за отговор № 2

Изтриването при избиране от същата таблица не е разрешено в MySQL.

Можете да опитате нещо подобно:

 SELECT @rows_to_delete:=COUNT(*)-25 FROM list;
DELETE FROM list ORDER BY id ASC LIMIT 0, @rows_to_delete;

Забележка: това не е тествано моля тествайте, преди да го стартирате на реални данни.


0 за отговор № 3

Мисля, че вашата заявка е близо, но това, което трябваПромяната е само за филтриране на id в подзаявката ви, не избирайте всичко, защото това няма смисъл. Искате да видите дали отделен елемент (id) не е в група неща (всички колони).

Опитайте да промените заявката си на това:

DELETE FROM list
WHERE id NOT IN(
SELECT id
FROM list
ORDER BY id DESC
LIMIT 25);

Първо ще тествам с някои фиктивни данни, но вярвам, че ще направи това, което искате.