- Categorias:
LIMIT / FETCH¶
Limita o número máximo de linhas devolvidas por uma instrução ou subconsulta. Tanto LIMIT (sintaxe PostgreSQL) quanto FETCH (sintaxe ANSI) são compatíveis e produzem o mesmo resultado.
- Consulte também:
Sintaxe¶
Sintaxe PostgreSQL¶
SELECT ...
FROM ...
[ ORDER BY ... ]
LIMIT <count> [ OFFSET <start> ]
[ ... ]
Sintaxe ANSI¶
SELECT ...
FROM ...
[ ORDER BY ... ]
[ OFFSET <start> ] [ { ROW | ROWS } ] FETCH [ { FIRST | NEXT } ] <count> [ { ROW | ROWS } ] [ ONLY ]
[ ... ]
Parâmetros¶
count
O número de linhas retornadas. Deve ser uma constante inteira não negativa.
Os valores NULL, cadeia de caracteres vazia (
''
) e$$$$
também são aceitos e são tratados como “ilimitados”; isto é útil principalmente para conectores e drivers (como o driver JDBC) se eles receberem uma lista incompleta de parâmetros ao vincular dinamicamente os parâmetros a uma instrução.OFFSET
start
O número da linha após a qual as linhas limitadas/buscadas são retornadas. Deve ser uma constante inteira não negativa.
Se
OFFSET
for omitido, a saída começa a partir da primeira linha do conjunto de resultados.Os valores NULL, cadeia de caracteres vazia (
''
) e$$$$
também são aceitos e são tratados como 0 (isto é, não pular nenhuma linha); isto é útil principalmente para conectores e drivers (como o driver JDBC) se eles receberem uma lista incompleta de parâmetros quando vincularem dinamicamente parâmetros a uma instrução.ONLY
Palavra-chave opcional que não afeta a saída. É usada para dar ênfase ao leitor humano.
Notas de uso¶
Uma cláusula ORDER BY não é necessária; no entanto, sem uma cláusula ORDER BY, os resultados não são determinísticos porque os resultados de consulta não estão necessariamente em nenhuma ordem específica. Para controlar os resultados retornados, use uma cláusula ORDER BY.
TOP
n
e LIMITcount
são equivalentes.Tanto a cláusula LIMIT quanto a cláusula SAMPLE retornam um subconjunto de linhas de uma tabela. Quando você usa a cláusula LIMIT, o Snowflake retorna o número especificado de linhas da maneira mais rápida possível. Quando você usa a cláusula SAMPLE, o Snowflake retorna linhas com base no método de amostragem especificado na cláusula.
Exemplos¶
Os exemplos a seguir mostram o efeito do LIMIT. Para simplificar, estas consultas omitem a cláusula ORDER BY
e assumem que a ordem de saída é sempre a mesma mostrada pela primeira consulta. As consultas do mundo real devem incluir ORDER BY.
select c1 from testtable; +------+ | C1 | |------| | 1 | | 2 | | 3 | | 20 | | 19 | | 18 | | 1 | | 2 | | 3 | | 4 | | NULL | | 30 | | NULL | +------+ select c1 from testtable limit 3 offset 3; +----+ | C1 | |----| | 20 | | 19 | | 18 | +----+ select c1 from testtable order by c1; +------+ | C1 | |------| | 1 | | 1 | | 2 | | 2 | | 3 | | 3 | | 4 | | 18 | | 19 | | 20 | | 30 | | NULL | | NULL | +------+ select c1 from testtable order by c1 limit 3 offset 3; +----+ | ID | |----| | 2 | | 3 | | 3 | +----+
O exemplo a seguir demonstra o uso de NULLs para indicar
Sem limite para o número de linhas.
Comece na linha 1 (não pule nenhuma linha)
CREATE TABLE demo1 (i INTEGER); INSERT INTO demo1 (i) VALUES (1), (2);
SELECT * FROM demo1 ORDER BY i LIMIT NULL OFFSET NULL; +---+ | I | |---| | 1 | | 2 | +---+
SELECT * FROM demo1 ORDER BY i LIMIT '' OFFSET ''; +---+ | I | |---| | 1 | | 2 | +---+
SELECT * FROM demo1 ORDER BY i LIMIT $$$$ OFFSET $$$$; +---+ | I | |---| | 1 | | 2 | +---+