Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como limito o número de linhas retornadas por uma consulta do Oracle após o pedido?


Você pode usar uma subconsulta para isso como
select *
from  
( select * 
  from emp 
  order by sal desc ) 
where ROWNUM <= 5;

Consulte também o tópico Sobre ROWNUM e limitando resultados no Oracle/AskTom para obter mais informações.

Atualizar :Para limitar o resultado com os limites inferior e superior, as coisas ficam um pouco mais inchadas com
select * from 
( select a.*, ROWNUM rnum from 
  ( <your_query_goes_here, with order by> ) a 
  where ROWNUM <= :MAX_ROW_TO_FETCH )
where rnum  >= :MIN_ROW_TO_FETCH;

(Copiado do artigo específico do AskTom)

Atualização 2 :A partir do Oracle 12c (12.1) existe uma sintaxe disponível para limitar linhas ou iniciar em deslocamentos.
SELECT * 
FROM   sometable
ORDER BY name
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;

Veja esta resposta para mais exemplos. Obrigado a Krumia pela dica.