En este artículo veremos cómo limitar resultados usando LIMIT en PostgreSQL. Limit es una cláusula opcional de la instrucción SELECT que nos va permitir decidir la cantidad de registros que nos debe devolver una consulta.
Sintaxis
La sintaxis para usar LIMIT es la siguiente:
SELECT columna1, columna2, columnaN
FROM nombreTabla
ORDER BY columnaN
LIMIT numeroFilas
En la sintaxis anterior:
- En el select se especifican las columnas a mostrar.
- En el from se especifica de qué tabla debe obtener las columnas.
- En la tercera línea se especifica cómo debe ordenar los resultados.
- Por último, se especifica un número determinado de líneas que se deben mostrar.
Ejemplos
Partimos de una tabla llamada empleados que contiene los siguientes 4 registros:
Mostrar los dos primeros
Si queremos mostrar únicamente los dos primeros nombres usando limit la sentencia sería la siguiente:
select nombre
from empleados
order by nombre asc
LIMIT 2;
Lenguaje del código: JavaScript (javascript)
Si ejecutamos la consulta comprobamos como el resultado es correcto ya que nos muestra los dos primeros nombres ordenados alfabéticamente:
Mostrar los dos primeros, pero saltándose el primero
Si queremos mostrar los dos primeros nombres pero saltándonos el primero, es decir, el segundo y el tercero usaremos LIMIT en combinación con OFFSET:
select nombre
from empleados
order by nombre asc
LIMIT 2 OFFSET 1
Lenguaje del código: JavaScript (javascript)
Puedes usar LIMIT para obtener fácilmente el top 10 si ordenas descendentemente por un campo numérico.
Ejemplo completo
Copia y pega el siguiente código en tu consola de PostgreSQL y realiza paso a paso leyendo los comentarios.
-- Borramos la tabla si existe
drop table if exists empleados;
-- Creamos la tabla
create table empleados
(
id_empleado numeric(2,0),
id_departamento numeric(2,0),
nombre character varying(50),
puesto character varying(50),
fecha_alta date,
sueldo integer
);
-- Insertamos valores
insert into empleados
values (1,1,'Miguel Troyano','Analista','26/09/1986',60000),
(2,1,'Ismael Troyano','Analista','01/01/2001',60000),
(3,1,'Jose Troyano','Alta Dirección','01/01/2001',80000),
(4,1,'Pilar Redondo','Alta Dirección','02/02/2002',80000);
-- Mostramos todos los nombres
select nombre
from empleados
order by nombre asc;
-- Mostramos los dos primeros nombres
select nombre
from empleados
order by nombre asc
LIMIT 2;
-- Mostramos los dos primeros nombres obviando el primero
select nombre
from empleados
order by nombre asc
LIMIT 2 OFFSET 1;
Lenguaje del código: JavaScript (javascript)