Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie begrenze ich die Anzahl der Zeilen, die von einer Oracle-Abfrage nach der Bestellung zurückgegeben werden?

Sie können dafür eine Unterabfrage wie

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

Sehen Sie sich auch das Thema On ROWNUM and limiting results bei Oracle/AskTom an, um weitere Informationen zu erhalten.

Aktualisieren :Um das Ergebnis sowohl mit Unter- als auch mit Obergrenzen zu begrenzen, wird es etwas aufgeblähter mit

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;

(Von angegebenem AskTom-Artikel kopiert)

Aktualisierung 2 :Ab Oracle 12c (12.1) ist eine Syntax verfügbar, um Zeilen zu begrenzen oder bei Offsets zu beginnen.

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

Weitere Beispiele finden Sie in dieser Antwort. Danke an Krumia für den Hinweis.