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.