La cláusula LIMIT controla cuántas filas se devuelven en los resultados de la consulta.
Sintaxis básica
Seleccionar las primeras filas:
LIMIT mDevuelve 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, mOmite las primeras n filas y devuelve las siguientes m.
En ambas formas, n y m deben ser enteros no negativos.
Límites 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.
Límites fraccionarios
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%) |
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 20LIMIT … WITH TIES
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 también funciona con límites y OFFSET negativos. Incluye filas adicionales que tienen los mismos valores de ORDER BY que la primera fila seleccionada:
SELECT number % 3 AS n FROM numbers(15)
ORDER BY n LIMIT -4 OFFSET -3 WITH TIES┌─n─┐
│ 1 │
│ 1 │
│ 1 │
│ 1 │
│ 1 │
│ 2 │
│ 2 │
└───┘Sin WITH TIES, el resultado sería 1, 1, 2, 2. Con WITH TIES, se incluyen tres filas adicionales con el valor 1 porque empatan con la primera fila seleccionada.
Este modificador puede combinarse con el modificador ORDER BY ... WITH FILL.
Consideraciones
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.
Véase también
- 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.