/ / seleccione los últimos 25 registros de la tabla SQL - mysql, sql

seleccione los últimos 25 registros de la tabla SQL - mysql, sql

Quiero volver a entrenar los últimos 25 registros ingresados ​​y eliminar los registros restantes de acuerdo con id.

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

Respuestas

1 para la respuesta № 1
DELETE *
FROM "list"
WHERE id NOT IN ( SELECT id
FROM "list"
ORDER BY id DESC
LIMIT 25 )

0 para la respuesta № 2

La eliminación mientras se selecciona de la misma tabla no está permitida en MySQL.

Puedes probar algo como esto:

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

NB: esto no se ha probado, por favor pruebe antes de ejecutarlo en datos reales.


0 para la respuesta № 3

Creo que tu consulta está cerca, pero lo que necesitasel cambio es solo para filtrar por ID en su subconsulta, no seleccione todo, porque eso no tiene sentido. Desea ver si un solo elemento (id) no está en un grupo de cosas (todas las columnas).

Intenta cambiar tu consulta a esto:

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

Primero probaría esto con algunos datos ficticios, pero creo que hará lo que quieras.