Saltar a contenido

PostgreSQL LIMIT es una cláusula opcional de la sentencia SELECT que restringe el número de filas devueltas por la consulta.

A continuación se ilustra la sintaxis de la cláusula LIMIT:

SELECT 
  select_list 
FROM 
  table_name 
ORDER BY 
  sort_expression 
LIMIT 
  row_count;

La sentencia devuelve row_count filas generadas por la consulta. Si row_count es cero, la consulta devuelve un conjunto vacío. En caso de que row_count sea NULL, la consulta devuelve el mismo conjunto de resultados ya que no tiene la cláusula LIMIT.

Si desea omitir un número de filas antes de devolver row_count filas, puede utilizar OFFSET cláusula colocada después de la cláusula LIMIT como se muestra en la siguiente declaración:

SELECT 
  select_list 
FROM 
  table_name 
ORDER BY 
  sort_expression 
LIMIT 
  row_count OFFSET row_to_skip;

La sentencia omite primero las filas row_to_skip antes de devolver las filas row_count generadas por la consulta.

Si row_to_skip es cero, la sentencia funcionará como si no tuviera la cláusula OFFSET.

Debido a que una tabla almacena las filas en un orden no especificado cuando se utiliza la cláusula LIMIT, siempre se debe utilizar la cláusula ORDER BY para controlar el orden de las filas.

Si no utiliza la cláusula ORDER BY, puede obtener un conjunto de resultados con el orden de filas no especificado.

Ejemplos de LIMIT en PostgreSQL

Veamos algunos ejemplos de uso de la cláusula LIMIT de PostgreSQL. Utilizaremos la tabla film de la base de datos de ejemplo para la demostración.

Film table

Uso de PostgreSQL LIMIT para restringir el número de filas devueltas ejemplo

Este ejemplo utiliza la cláusula LIMIT para obtener las cinco primeras películas ordenadas por film_id:

SELECT 
  film_id, 
  title, 
  release_year 
FROM 
  film 
ORDER BY 
  film_id 
LIMIT 
  5;

Salida:

 film_id |      title       | release_year
---------+------------------+--------------
       1 | Academy Dinosaur |         2006
       2 | Ace Goldfinger   |         2006
       3 | Adaptation Holes |         2006
       4 | Affair Prejudice |         2006
       5 | African Egg      |         2006
(5 rows)

Cómo funciona.

  • En primer lugar, ordene las películas por el film_id en orden ascendente utilizando la cláusula ORDER BY film_id.
  • En segundo lugar, tome 5 películas de la parte superior utilizando la cláusula LIMIT 5.

Ejemplo de uso de PostgreSQL LIMIT con OFFSET

Para recuperar 4 películas empezando por la cuarta ordenada por film_id, se utilizan las cláusulas LIMIT y OFFSET de la siguiente manera:

SELECT 
  film_id, 
  title, 
  release_year 
FROM 
  film 
ORDER BY 
  film_id 
LIMIT 4 OFFSET 3;

Salida:

 film_id |      title       | release_year
---------+------------------+--------------
       4 | Affair Prejudice |         2006
       5 | African Egg      |         2006
       6 | Agent Truman     |         2006
       7 | Airplane Sierra  |         2006
(4 rows)

Cómo funciona.

  • En primer lugar, ordene las películas por el identificador de película en orden ascendente.
  • En segundo lugar, omita las tres primeras filas utilizando la cláusula OFFSET 3.
  • Segundo, toma las siguientes cuatro filas usando la cláusula LIMIT 4.

Usando OFFSET LIMIT de PostgreSQL para obtener N filas superiores/inferiores

Normalmente, se utiliza la cláusula LIMIT para seleccionar las filas con los valores más altos o más bajos de una tabla.

El siguiente ejemplo utiliza la cláusula LIMIT para recuperar las 10 películas más caras por precio de alquiler:

SELECT 
  film_id, 
  title, 
  rental_rate 
FROM 
  film 
ORDER BY 
  rental_rate DESC 
LIMIT 
  10;

Salida:

 film_id |        title        | rental_rate
---------+---------------------+-------------
      13 | Ali Forever         |        4.99
      20 | Amelie Hellfighters |        4.99
       7 | Airplane Sierra     |        4.99
      10 | Aladdin Calendar    |        4.99
       2 | Ace Goldfinger      |        4.99
       8 | Airport Pollock     |        4.99
      98 | Bright Encounters   |        4.99
     133 | Chamber Italian     |        4.99
     384 | Grosse Wonderful    |        4.99
      21 | American Circus     |        4.99
(10 rows)

Cómo funciona.

  • En primer lugar, ordene todas las películas por precio de alquiler de mayor a menor utilizando la cláusula ORDER BY rental_rate.
  • Segundo, tome sólo 10 filas de la parte superior utilizando la cláusula LIMIT 10.

Resumen

  • Utilice la cláusula LIMIT OFFSET de PostgreSQL para recuperar un subconjunto de filas devueltas por una consulta.