Listado completo de tutoriales
42 - Cláusulas limit y offset del comando select |
Las cláusulas "limit" y "offset" se usan para restringir los registros que se retornan en una consulta "select".
La cláusula limit recibe un argumento numérico positivo que indica el número máximo de registros a retornar; la cláusula offset indica el número del primer registro a retornar. El número de registro inicial es 0 (no 1).
Si el limit supera la cantidad de registros de la tabla, se limita hasta el último registro.
Ejemplo:
select * from libros limit 4 offset 0;
Muestra los primeros 4 registros, 0,1,2 y 3.
Si tipeamos:
select * from libros limit 4 offset 5;
recuperamos 4 registros, desde el 5 al 8.
Si se coloca solo la cláusula limit retorna tantos registros como el valor indicado, comenzando desde 0. Ejemplo:
select * from libros limit 8;
Muestra los primeros 3 registros.
Es conveniente utilizar la cláusula order by cuando utilizamos limit y offset, por ejemplo:
select * from libros order by codigo limit 3;
drop table if exists libros;
create table libros(
codigo serial,
titulo varchar(50) not null,
autor varchar(30),
editorial varchar(15),
precio decimal(5,2),
primary key (codigo)
);
insert into libros (titulo,autor,editorial,precio)
values('El aleph','Borges','Planeta',15);
insert into libros (titulo,autor,editorial,precio)
values('Martin Fierro','Jose Hernandez','Emece',22.20);
insert into libros (titulo,autor,editorial,precio)
values('Antologia poetica','Borges','Planeta',40);
insert into libros (titulo,autor,editorial,precio)
values('Aprenda PHP','Mario Molina','Emece',18.20);
insert into libros (titulo,autor,editorial,precio)
values('Cervantes y el quijote','Borges','Paidos',36.40);
insert into libros (titulo,autor,editorial,precio)
values('Manual de PHP', 'J.C. Paez', 'Paidos',30.80);
insert into libros (titulo,autor,editorial,precio)
values('Harry Potter y la piedra filosofal','J.K. Rowling','Paidos',45.00);
insert into libros (titulo,autor,editorial,precio)
values('Harry Potter y la camara secreta','J.K. Rowling','Paidos',46.00);
insert into libros (titulo,autor,editorial,precio)
values('Alicia en el pais de las maravillas','Lewis Carroll','Paidos',null);
-- Para recuperar 4 libros desde el registro cero tipeamos:
select * from libros limit 4 offset 0;
-- Para recuperar 4 libros a partir del registro 5:
select * from libros limit 4 offset 5;
-- Si colocamos solo el limit, éste indica el máximo número de registros
-- a retornar, comenzando desde 0:
select * from libros limit 8;
-- Mostrar los tres primeros registro ordenados por código:
select * from libros order by codigo limit 3;
La ejecución de este lote de comandos SQL genera una salida similar a:
