Pular para o conteúdo principal
OFFSET e FETCH permitem recuperar dados em partes. Eles especificam um bloco de linhas que você deseja obter em uma única consulta.
-- Estilo SQL padrão:
[OFFSET offset_row_count {ROW | ROWS}] [FETCH {FIRST | NEXT} fetch_row_count {ROW | ROWS} {ONLY | WITH TIES}]

-- Estilo MySQL/PostgreSQL:
[LIMIT [n, ]m] [OFFSET offset_row_count]
O valor de offset_row_count ou fetch_row_count pode ser um número ou uma constante literal. Você pode omitir fetch_row_count; por padrão, ele é igual a 1. OFFSET especifica o número de linhas que devem ser ignoradas antes de começar a retornar linhas do conjunto de resultados da consulta. OFFSET n ignora as primeiras n linhas do resultado. OFFSET negativo é suportado: OFFSET -n ignora as últimas n linhas do resultado. OFFSET fracionário também é suportado: OFFSET n — se 0 < n < 1, então os primeiros n * 100% do resultado são ignorados. Exemplo: • OFFSET 0.1 — ignora os primeiros 10% do resultado.
Observação • A fração deve ser um número Float64 menor que 1 e maior que zero. • Se o cálculo resultar em um número fracionário de linhas, ele será arredondado para cima até o próximo número inteiro.
O FETCH especifica o número máximo de linhas que podem estar no resultado de uma consulta. A opção ONLY é usada para retornar linhas que vêm imediatamente após as linhas omitidas pelo OFFSET. Nesse caso, FETCH é uma alternativa à cláusula LIMIT. Por exemplo, a consulta a seguir
SELECT * FROM test_fetch ORDER BY a OFFSET 1 ROW FETCH FIRST 3 ROWS ONLY;
é idêntico à consulta
SELECT * FROM test_fetch ORDER BY a LIMIT 3 OFFSET 1;
A opção WITH TIES é usada para retornar linhas adicionais empatadas na última posição do conjunto de resultados, de acordo com a cláusula ORDER BY. Por exemplo, se fetch_row_count estiver definido como 5, mas duas linhas adicionais tiverem os mesmos valores nas colunas de ORDER BY da quinta linha, o conjunto de resultados conterá sete linhas.
De acordo com o padrão, a cláusula OFFSET deve vir antes da cláusula FETCH, se ambas estiverem presentes.
O deslocamento real também pode depender da configuração offset.

Exemplos

Tabela de entrada:
┌─a─┬─b─┐
│ 1 │ 1 │
│ 2 │ 1 │
│ 3 │ 4 │
│ 1 │ 3 │
│ 5 │ 4 │
│ 0 │ 6 │
│ 5 │ 7 │
└───┴───┘
Uso da opção ONLY:
Consulta
SELECT * FROM test_fetch ORDER BY a OFFSET 3 ROW FETCH FIRST 3 ROWS ONLY;
Response
┌─a─┬─b─┐
│ 2 │ 1 │
│ 3 │ 4 │
│ 5 │ 4 │
└───┴───┘
Uso da opção WITH TIES:
Consulta
SELECT * FROM test_fetch ORDER BY a OFFSET 3 ROW FETCH FIRST 3 ROWS WITH TIES;
Response
┌─a─┬─b─┐
│ 2 │ 1 │
│ 3 │ 4 │
│ 5 │ 4 │
│ 5 │ 7 │
└───┴───┘
Última modificação em 10 de junho de 2026