A cláusula LIMIT controla quantas linhas são retornadas no resultado da sua consulta.
Sintaxe básica
Selecione as primeiras linhas:
LIMIT mRetorna 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, mIgnora 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 20LIMIT … 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.