sql >> Database >  >> RDS >> Oracle

Hoe beperk ik het aantal rijen dat wordt geretourneerd door een Oracle-query na het bestellen?

U kunt hiervoor een subquery gebruiken, zoals

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

Bekijk ook het onderwerp On ROWNUM en het beperken van resultaten bij Oracle/AskTom voor meer informatie.

Bijwerken :Om het resultaat met zowel onder- als bovengrenzen te beperken, wordt het een beetje opgeblazen met

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;

(Gekopieerd uit gespecificeerd AskTom-artikel)

Update 2 :Vanaf Oracle 12c (12.1) is er een syntaxis beschikbaar om rijen te beperken of te beginnen bij offsets.

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

Zie dit antwoord voor meer voorbeelden. Met dank aan Krumia voor de hint.



  1. Buitenlandse sleutel naar samengestelde sleutel

  2. Hoe SQLite Count() werkt

  3. Verbinding maken met MySQL vanaf Android met JDBC

  4. Hoe een Foreign key Constraint toe te voegen aan een bestaande tabel in SQL Server - SQL Server / TSQL Tutorial Part 68