Wenn du eine Datenbanktabelle leeren möchtest, jedoch die letzten X Zeilen behalten möchtest (in nachfolgenden Beispielen 20), dann kannst do folgendes SQL-Statement nutzen:
DELETE
FROM `my_table`
WHERE id NOT IN (
SELECT id
FROM (
SELECT id
FROM `my_table`
ORDER BY id DESC LIMIT 20 -- Anzahl Einträge, die verbleiben soll
) subquery);
Um eine umfangreiche ID-Liste zu vermeiden kann stattdessen auch folgendes Statement genutzt werden:
DELETE
FROM `my_table`
WHERE id <= (SELECT id
FROM (SELECT id
FROM `my_table`
ORDER BY id DESC LIMIT 1
OFFSET 20 -- Anzahl Einträge, die verbleiben soll
) subquery)