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.
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áusulaORDER 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.