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

sql (oracle), за да изберете първите 10 записа, след това следващите 10 и т.н

Има само един доста сложен начин да направите това, което е истинска болка с Oracle. Те трябва просто да приложат клауза LIMIT/OFFSET...

Номерът на реда се присвоява след редът е избран от клаузата where, така че rownum трябва винаги да започва с 1. where rownum > x винаги ще се оценява като false.

Освен това rownum се присвоява преди да се извърши сортирането , така че rownum няма да бъде в същия ред, както казва вашата поръчка от.

Можете да заобиколите и двата проблема с подизбор:

 select a,b,c, rn from 
    ( select a,b,c, rownum rn from 
         ( select a,b,c from the_table where x = ? order by c)
      where rownum < Y)
  where rn > X

Ако не е нужно да сортирате (но само тогава), можете да опростите до

 select a,b,c, rn from
     ( select a,b,c, rownum rn from the_table where rownum < Y )
   where rn > X


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-02070:базата данни не се поддържа в този контекст

  2. Заявете съхранена процедура за нейните имена и типове на параметри

  3. java.sql.SQLException:ORA-01843:грешка не е валиден месец

  4. Функция TRUNC(число) в Oracle

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