2012-10-08 12 views
15

¿Existe un comando SQL para eliminar las primeras líneas X de una tabla de base de datos?Eliminar las primeras X líneas de una base de datos

Tengo una tabla de base de datos que contiene cierta información, pero no tiene un valor de identificación o autoincremento y un programa que procesa las primeras líneas X de esta tabla. Después, estas líneas X deben borrarse. Por lo que la consulta estándar es:

DELETE FROM table WHERE something = value; 

Entonces, ¿hay una manera de construir una consulta como:

DELETE FROM table WHERE rownumber <= X; 

He tratado este comando, pero no pasa nada a la base de datos .. ¿Tiene ¿Cualquier pista?

Respuesta

33

Uso LIMIT en su borrado:

DELETE FROM table WHERE condition LIMIT 10 

O, si no desea que la condición

DELETE FROM table LIMIT 10 

Recuerde que el orden en que se eliminarán las filas no está definido - que depende de su configuración DBMS e índices de tabla. Debe incluir un ORDER BY para que la eliminación se realice en un orden definido, p. ORDER BY id ASC para eliminar primero los ID más bajos.

Consulte el MySQL documentation for DELETE para obtener más información.

+1

Tenga mucho cuidado cuando haga esto. El orden de la selección puede cambiar si agrega un índice o algo así. El servidor SQL hace la selección más fácil que puede encontrar cuando no agrega una cláusula where. – Romo

+0

Eso es correcto. Se aplican los requisitos habituales de "PEDIDO POR". He editado para reflejar esto. – Polynomial

+0

Gracias por su respuesta! Intenté esto y desafortunadamente solo funciona cuando se da una condición. Así que ahora uso 'ELIMINAR DE la tabla WHERE a_field> 0 LIMIT X;' Esto funciona hasta ahora. Gracias :-) – coroner

Cuestiones relacionadas