sql >> Base de Datos >  >> RDS >> Mysql

Eliminar todas las filas y mantener la última x a la izquierda

DELETE soporta un ORDER BY y LIMIT cláusula, por lo que es posible. Sin embargo, debido a DELETE Restricciones referenciales y parámetros de LIMIT necesitas dos 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;

Tenga en cuenta que esto probablemente requerirá una tecnología intermedia. He mostrado las consultas como referencia.