sql >> Databasteknik >  >> RDS >> Oracle

Hur begränsar jag antalet rader som returneras av en Oracle-fråga efter beställning?

Du kan använda en underfråga för detta som

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

Ta också en titt på ämnet On ROWNUM och begränsande resultat på Oracle/AskTom för mer information.

Uppdatera :För att begränsa resultatet med både nedre och övre gränser blir det lite mer uppsvällt med

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;

(Kopierat från specificerad AskTom-artikel)

Uppdatering 2 :Från och med Oracle 12c (12.1) finns en syntax tillgänglig för att begränsa rader eller börja med offset.

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

Se detta svar för fler exempel. Tack till Krumia för tipset.



  1. Åtkomst till en fil-DSN från Java

  2. Hur man får poster mellan 2 datum i MySQL

  3. ojdbc14.jar mot ojdbc6.jar

  4. Hur man numrerar om det primära indexet