Limitar resultados usando LIMIT en PostgreSQL

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;

Si ejecutamos la consulta comprobamos como el resultado es correcto ya que nos muestra los dos primeros nombres ordenados alfabéticamente:

Limitar resultados usando LIMIT en PostgreSQL

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
Consejo

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;

Escribir un comentario

Este sitio está protegido por reCAPTCHA y se aplican la política de privacidad y los términos de servicio de Google.