sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo limito el número de filas devueltas por una consulta de Oracle después de realizar el pedido?

Puede usar una subconsulta para esto como

select *
from  
( select * 
  from emp 
  order by sal desc ) 
where ROWNUM <= 5;

Consulte también el tema Sobre ROWNUM y la limitación de resultados en Oracle/AskTom para obtener más información.

Actualizar :Para limitar el resultado con los límites inferior y superior, las cosas se hinchan un poco más

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 del artículo de AskTom especificado)

Actualización 2 :A partir de Oracle 12c (12.1), hay una sintaxis disponible para limitar filas o comenzar en compensaciones.

SELECT * 
FROM   sometable
ORDER BY name
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;

Ver esta respuesta para más ejemplos. Gracias a Krumia por la pista.