sql >> Databáze >  >> RDS >> Oracle

Jak omezím počet řádků vrácených dotazem Oracle po objednání?

K tomu můžete použít poddotaz jako

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

Další informace najdete také v tématu On ROWNUM a omezování výsledků na Oracle/AskTom.

Aktualizovat :Chcete-li omezit výsledek pomocí spodních i horních hranic, jsou věci trochu nafouknutější

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;

(Zkopírováno ze zadaného AskTom-article)

Aktualizace 2 :Počínaje Oracle 12c (12.1) je k dispozici syntaxe pro omezení řádků nebo začátek na offsetech.

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

Další příklady naleznete v této odpovědi. Díky Krumii za tip.



  1. Oracle vybere nejnovější záznam data

  2. Jak se připojit k databázi SQL Server z JavaScriptu v prohlížeči?

  3. Funkce DECOMPOSE() v Oracle

  4. Řaďte ​​podle COUNT za hodnotu