Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

LIMIT

La cláusula LIMIT controla cuántas filas se devuelven en los resultados de la consulta.

Sintaxis básica

Seleccionar las primeras filas:

LIMIT m

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.

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 20

LIMIT … 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.
Navigation