Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да огранича броя на редовете, върнати от заявка на Oracle след поръчка?

Можете да използвате подзаявка за това като

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

Разгледайте и темата За ROWNUM и ограничаване на резултатите в Oracle/AskTom за повече информация.

Актуализиране :За да ограничите резултата както с долни, така и с горни граници, нещата стават малко по-раздути с

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;

(Копирано от посочена AskTom-статия)

Актуализация 2 :Започвайки с Oracle 12c (12.1) има наличен синтаксис за ограничаване на редовете или започване с отмествания.

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

Вижте този отговор за повече примери. Благодаря на Krumia за намека.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Свързване на SQL Server към Oracle

  2. Javascript дата към sql обект дата

  3. PLS-00201 идентификатор „PACKAGENAME.PROCEDURENAME“ трябва да бъде деклариран

  4. Как да използвате изчислена колона за изчисляване на друга колона в същия изглед

  5. Полезни запитвания за изтичане на паролата/политика/Настройки на oracle EBS