46 - Cláusula limit del comando select.


La cláusula "limit" se usa para restringir los registros que se retornan en una consulta "select".

Recibe 1 ó 2 argumentos numéricos enteros positivos; el primero indica el número del primer registro a retornar, el segundo, el número máximo de registros a retornar. El número de registro inicial es 0 (no 1).

Si el segundo argumento supera la cantidad de registros de la tabla, se limita hasta el último registro.

Ejemplo:

 select * from libros limit 0,4;

Muestra los primeros 4 registros, 0,1,2 y 3.

Si tipeamos:

 select * from libros limit 5,4;

recuperamos 4 registros, desde el 5 al 8.

Si se coloca un solo argumento, indica el máximo número de registros a retornar, comenzando desde 0. Ejemplo:

 select * from libros limit 8;

Muestra los primeros 8 registros.

Para recuperar los registros desde cierto número hasta el final, se puede colocar un número grande para el segundo argumento:

 select * from libros limit 6,10000;

recupera los registros 7 al último.

"limit" puede combinarse con el comando "delete". Si queremos eliminar 2 registros de la tabla "libros" Usamos:

 delete from libros
  limit 2;

Podemos ordenar los regitros por precio (por ejemplo) y borrar 2:

 delete from libros
  order by precio
  limit 2;

esta sentencia borrará los 2 primeros registros, es decir, los de precio más bajo.

Podemos emplear la cláusula "limit" para eliminar registros duplicados. Por ejemplo, continuamos con la tabla "libros" de una librería, ya hemos almacenado el libro "El aleph" de "Borges" de la editorial "Planeta", pero nos equivocamos y volvemos a ingresar el mismo libro, del mismo autor y editorial 2 veces más, es un error que no controla MySQL. Para eliminar el libro duplicado y que sólo quede un registro de él vemos cuántos tenemos:

 select * from libros
  where titulo='El aleph' and
  autor='Borges' and
  editorial='Planeta';

Luego eliminamos con "limit" la cantidad sobrante (tenemos 3 y queremos solo 1):

 delete from libros
  where titulo='El aleph" and
  autor='Borges' and
  editorial='Planeta'
  limit 2;

Un mensaje nos muestra la cantidad de registros eliminados.

Es decir, con "limit" indicamos la cantidad a eliminar.

Veamos cuántos hay ahora:

 select * from libros
  where titulo='El aleph" and
  autor='Borges' and
  editorial='Planeta';

Sólo queda 1.

Retornar