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

SQL (ORACLE):ORDER BY и LIMIT

Преди 12.1 Oracle не поддържа LIMIT или OFFSET ключови думи. Ако искате да извлечете редове от N до M от набор от резултати, ще ви трябва нещо като:

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>>

или с помощта на аналитични функции:

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

Всеки от тези подходи ще ви даде редове от N до M от сортирания резултат.

В 12.1 и по-нови, можете да използвате OFFSET и/или FETCH [FIRST | NEXT] оператори:

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. Вмъкване на изображение в BLOB Oracle 10g

  2. Oracle:OALL8 е в непоследователно състояние

  3. Group_concat MySQL функцията е еквивалентна в Oracle

  4. Как да изпълня съхранена процедура на оракул?

  5. променете колоната за преименуване на таблица в базата данни на Oracle