Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

LIMIT

A cláusula LIMIT controla quantas linhas são retornadas no resultado da sua consulta.

Sintaxe básica

Selecione as primeiras linhas:

LIMIT m

Retorna as primeiras m linhas do resultado, ou todos os registros se houver menos de m.

Sintaxe alternativa de TOP (compatível com o MS SQL Server):

-- SELECT TOP número|percentual nome_da(s)_coluna(s) FROM nome_da_tabela
SELECT TOP 10 * FROM numbers(100);
SELECT TOP 0.1 * FROM numbers(100);

Isso equivale a LIMIT m e pode ser usado por compatibilidade com consultas do Microsoft SQL Server.

SELECT com OFFSET:

LIMIT m OFFSET n
-- ou de forma equivalente:
LIMIT n, m

Ignora as primeiras n linhas e retorna as próximas m linhas.

Em ambas as formas, n e m devem ser inteiros não negativos.

Limites negativos

Selecione linhas do fim do conjunto de resultados usando valores negativos:

Sintaxe Resultado
LIMIT -m Últimas m linhas
LIMIT -m OFFSET -n Últimas m linhas após ignorar as últimas n linhas
LIMIT m OFFSET -n Primeiras m linhas após ignorar as últimas n linhas
LIMIT -m OFFSET n Últimas m linhas após ignorar as primeiras n linhas

A sintaxe LIMIT -n, -m é equivalente a LIMIT -m OFFSET -n.

Limites fracionários

Use valores decimais entre 0 e 1 para selecionar uma porcentagem das linhas:

Sintaxe Resultado
LIMIT 0.1 Primeiros 10% das linhas
LIMIT 1 OFFSET 0.5 A linha mediana
LIMIT 0.25 OFFSET 0.5 Terceiro quartil (25% das linhas após pular os primeiros 50%)

Combinando tipos de LIMIT

Você pode combinar inteiros padrão com offsets fracionários ou negativos:

LIMIT 10 OFFSET 0.5    -- 10 linhas a partir do ponto médio
LIMIT 10 OFFSET -20    -- 10 linhas após ignorar as últimas 20

LIMIT … WITH TIES

O modificador WITH TIES inclui linhas adicionais com os mesmos valores de ORDER BY da última linha dentro do limite.

SELECT * FROM (
    SELECT number % 50 AS n FROM numbers(100)
) ORDER BY n LIMIT 0, 5
┌─n─┐
│ 0 │
│ 0 │
│ 1 │
│ 1 │
│ 2 │
└───┘

Com WITH TIES, todas as linhas com o mesmo último valor são incluídas:

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 │
└───┘

A linha 6 é incluída porque tem o mesmo valor (2) da linha 5.

O mesmo acontece quando o offset é especificado com a palavra-chave 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 │
└───┘

Pular as 2 primeiras linhas e retornar 3 normalmente resultaria em 1, 1, 2, mas o segundo 2 é incluído porque tem o mesmo valor da última linha.

WITH TIES também funciona com limites e offsets negativos. Ele inclui linhas adicionais com os mesmos valores de ORDER BY da primeira linha selecionada:

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 │
└───┘

Sem WITH TIES, o resultado seria 1, 1, 2, 2. Com WITH TIES, três linhas extras com valor 1 são incluídas porque têm o mesmo valor da primeira linha selecionada.

Esse modificador pode ser combinado com o modificador ORDER BY ... WITH FILL.

Considerações

Resultados não determinísticos: Sem a cláusula ORDER BY, as linhas retornadas podem ser arbitrárias e variar entre execuções da consulta.

Limite no servidor: O número de linhas retornadas também pode ser afetado pela configuração limit.

Veja também

  • LIMIT BY — Limita o número de linhas por grupo de valores, útil para obter os N principais resultados em cada categoria.
Navigation