La cláusula LIMIT controla cuántas filas se devuelven en los resultados de la consulta.
Seleccionar las primeras filas:
Devuelve las primeras m filas del resultado, o todos los registros si hay menos de m.
Sintaxis alternativa de TOP (compatible con MS SQL Server):
-- SELECT TOP número|porcentaje nombre_columna(s) FROM nombre_tabla
SELECT TOP 10 * FROM numbers(100);
SELECT TOP 0.1 * FROM numbers(100);
Esto equivale a LIMIT m y puede utilizarse por compatibilidad con consultas de Microsoft SQL Server.
Selección con OFFSET:
LIMIT m OFFSET n
-- o de manera equivalente:
LIMIT n, m
Omite las primeras n filas y devuelve las siguientes m.
En ambas formas, n y m deben ser enteros no negativos.
Selecciona filas desde el final del conjunto de resultados utilizando valores negativos:
| Sintaxis | Resultado |
|---|
LIMIT -m | Últimas m filas |
LIMIT -m OFFSET -n | Últimas m filas tras omitir las últimas n filas |
LIMIT m OFFSET -n | Primeras m filas tras omitir las últimas n filas |
LIMIT -m OFFSET n | Últimas m filas tras omitir las primeras n filas |
La sintaxis LIMIT -n, -m equivale a LIMIT -m OFFSET -n.
Usa valores decimales entre 0 y 1 para seleccionar un porcentaje de filas:
| Sintaxis | Resultado |
|---|
LIMIT 0.1 | El primer 10% de las filas |
LIMIT 1 OFFSET 0.5 | La fila central |
LIMIT 0.25 OFFSET 0.5 | El tercer cuartil (25% de las filas después de omitir el primer 50%) |
- Las fracciones deben ser valores Float64 mayores que 0 y menores que 1.
- Los recuentos fraccionarios de filas se redondean al siguiente número entero.
Combinación de tipos de LIMIT
Puede combinar enteros estándar con OFFSET fraccionarios o negativos:
LIMIT 10 OFFSET 0.5 -- 10 filas comenzando desde el punto medio
LIMIT 10 OFFSET -20 -- 10 filas después de omitir las últimas 20
El modificador WITH TIES incluye filas adicionales que tienen los mismos valores de ORDER BY que la última fila incluida por el límite.
SELECT * FROM (
SELECT number % 50 AS n FROM numbers(100)
) ORDER BY n LIMIT 0, 5
┌─n─┐
│ 0 │
│ 0 │
│ 1 │
│ 1 │
│ 2 │
└───┘
Con WITH TIES, también se incluyen todas las filas que coinciden con el último valor:
SELECT * FROM (
SELECT number % 50 AS n FROM numbers(100)
) ORDER BY n LIMIT 0, 5 WITH TIES
┌─n─┐
│ 0 │
│ 0 │
│ 1 │
│ 1 │
│ 2 │
│ 2 │
└───┘
La fila 6 se incluye porque tiene el mismo valor (2) que la fila 5.
Lo mismo ocurre cuando el OFFSET se especifica con la palabra clave OFFSET:
SELECT * FROM (
SELECT number % 50 AS n FROM numbers(100)
) ORDER BY n LIMIT 3 OFFSET 2 WITH TIES
┌─n─┐
│ 1 │
│ 1 │
│ 2 │
│ 2 │
└───┘
Al omitir las primeras 2 filas y tomar 3, normalmente se devolvería 1, 1, 2, pero se incluye el segundo 2 porque empata con la última fila.
WITH TIES no es compatible con límites negativos.
Este modificador puede combinarse con el modificador ORDER BY ... WITH FILL.
Resultados no deterministas: Sin una cláusula ORDER BY, las filas devueltas pueden ser arbitrarias y variar de una ejecución de la consulta a otra.
Límite del servidor: La cantidad de filas devueltas también puede verse afectada por la configuración limit.
- LIMIT BY — Limita el número de filas por cada grupo de valores; resulta útil para obtener los N resultados principales dentro de cada categoría.