Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Excluir todas as linhas e manter o último x restante


DELETE suporta um ORDER BY e LIMIT cláusula, por isso é possível. No entanto, devido a DELETE restrições referenciais e parâmetros de LIMIT você precisa de duas consultas.
SELECT COUNT(*) AS total FROM table  WHERE roomid = 1;
-- run only if count is > 3
DELETE FROM table WHERE roomid = 1 LIMIT total - 3;

Observe que isso provavelmente exigirá uma tecnologia intermediária. Eu mostrei as consultas para referência.