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

SQL (ORACLE):ORDER BY i LIMIT

Przed wersją 12.1, Oracle nie obsługuje LIMIT lub OFFSET słowa kluczowe. Jeśli chcesz pobrać wiersze od N do M z zestawu wyników, potrzebujesz czegoś takiego:

SELECT a.*
  FROM (SELECT b.*,
               rownum b_rownum
          FROM (SELECT c.*
                  FROM some_table c
                 ORDER BY some_column) b
         WHERE rownum <= <<upper limit>>) a
 WHERE b_rownum >= <<lower limit>>

lub za pomocą funkcji analitycznych:

SELECT a.*
  FROM (SELECT b.*,
               rank() over (order by some_column) rnk
          FROM some_table)
 WHERE rnk BETWEEN <<lower limit>> AND <<upper limit>>
 ORDER BY some_column

Każde z tych podejść spowoduje posortowanie wierszy od N do M posortowanego wyniku.

W wersji 12.1 i nowszych możesz użyć OFFSET i/lub FETCH [FIRST | NEXT] operatorzy:

SELECT *
  FROM some_table
 ORDER BY some_column
 OFFSET <<lower limit>> ROWS
  FETCH NEXT <<page size>> ROWS ONLY



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Podłączanie Oracle 21c do SQL Server

  2. Czy Oracle obsługuje wyszukiwanie pełnotekstowe?

  3. Jaka jest główna różnica między Varchar2 a char

  4. Jak można wielokrotnie uruchomić to samo zapytanie przy użyciu pętli w PL/SQL?

  5. Data wyroczni