Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak mogę ograniczyć liczbę wierszy zwracanych przez zapytanie Oracle po złożeniu zamówienia?

W tym celu możesz użyć podzapytania, takiego jak

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

Więcej informacji można znaleźć w temacie dotyczącym ROWNUM i ograniczania wyników w Oracle/AskTom.

Aktualizacja :Aby ograniczyć wynik z dolnymi i górnymi granicami, rzeczy stają się nieco bardziej rozdęte

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;

(Skopiowane z określonego artykułu AskTom)

Aktualizacja 2 :Począwszy od Oracle 12c (12.1) dostępna jest składnia pozwalająca ograniczyć wiersze lub zacząć od przesunięć.

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

Zobacz tę odpowiedź, aby uzyskać więcej przykładów. Dzięki Krumii za podpowiedź.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Obsługa wyjątków wstawiania JDBC wsadowego

  2. Znajdowanie luk w sekwencji w tabeli w Oracle

  3. Funkcja POWER() w Oracle

  4. Jak rozwiązać ORA-06512 pod numerem linii

  5. ALTER &DROP Table DDL z natychmiastowym wykonaniem w bazie danych Oracle