QUICK TIPS: First e Skip no Firebird – Selecionando N registros em uma consulta

Olá pessoal, nesta quick tip falaremos sobre as funções First e Skip do Firebird.

Olá pessoal, nesta quick tip falaremos sobre as funções First e Skip do Firebird.

Aproveitando a oportunidade do trocadilho, vamos falar primeiro do first: esta função nos permite retornar apenas os N primeiros registros de uma consulta. Por exemplo, no seguinte select retornaremos todos os registros da tabela:

SELECT ID, PAPEL, PRECO_ENTRADA, STOP_GANHO FROM historico_operacao

O resultado é o seguinte:

Até aqui, tudo normal, um select para trazer todos os registros. Porém, se desejarmos trazer apenas os cinco primeiros registros teríamos que usar o first para indicar isso. Dessa forma, nossa consulta ficaria assim:

SELECT FIRST 5 ID, PAPEL, PRECO_ENTRADA, STOP_GANHO FROM historico_operacao

E teríamos consequentemente o seguinte resultado:

Como podem ver é bem simples usar o first. Muita gente, intuitivamente, após usar o first tenta usar o “last” para pegar os N últimos registros de uma consulta, porém o “last” não existe. Para pegar os N últimos registros de uma consulta temos que combinar o first com o order by. Dessa forma, para pegarmos os últimos cinco registros de uma consulta teríamos o seguinte select com o seguinte resultado:

SELECT FIRST 5 ID, PAPEL, PRECO_ENTRADA, STOP_GANHO FROM historico_operacao ORDER BY ID DESC

Como podemos observar, conseguimos com order by desc simular um comando last, pegando os N últimos registros de uma consulta.

Como podemos ver até aqui, conseguimos pegar do primeiro registro até o quinto, do décimo segundo até o último, mas e se quisermos pegar do sexto ao décimo segundo, como fazemos?

Vamos utilizar o skip, que em uma tradução livre significa “pular” ou “saltar”, e é exatamente isso que ele faz. Ele nos permite “pular” N registros para depois pegar os N primeiros, como mostra o exemplo abaixo:

SELECT FIRST 7 skip 5 ID, PAPEL, PRECO_ENTRADA, STOP_GANHO FROM historico_operacao

No exemplo podemos observar que conseguimos atingir nosso objetivo: pegar do registro 6 ao 12, ou seja, deixando de fora da consulta os registros 1 ao 5 e 13 ao 16. O Firebird pulou os primeiros cinco registros da consulta, e pegou os sete primeiros a partir do sexto registro -com isso, obtivemos o resultado observado.

Eu uso essas duas funções constantemente: o skip por exemplo é extremamente interessante quando se precisa extrair dados por partes, ou dividir uma consulta para processamento em paralelo por exemplo.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados