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

Избиране на втория ред на таблица с помощта на rownum

За да обясним това поведение, трябва да разберем как Oracle обработва ROWNUM. Когато присвоява ROWNUM на ред, Oracle започва от 1 и увеличава стойността само когато е избран ред; тоест, когато са изпълнени всички условия в клаузата WHERE. Тъй като нашето условие изисква ROWNUM да е по-голямо от 2, не се избират редове и ROWNUM никога не се увеличава повече от 1.

Изводът е, че условия като следните ще работят според очакванията.

.. WHERE rownum =1;

.. WHERE rownum <=10;

Докато заявките с тези условия винаги ще връщат нула редове.

.. WHERE rownum =2;

.. WHERE rownum> 10;

Цитирано от Разбиране на Oracle rownum

Трябва да промените заявката си по този начин, за да работи:

select empno
from
    (
    select empno, rownum as rn 
    from (
          select empno
          from emp
          order by sal desc
          )
    )
where rn=2;

РЕДАКТИРАНЕ :Коригирах заявката, за да получа rownum след поръчката по Sal desc



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Извикване на функция на Oracle от Java

  2. ТИП Промяна на дефиниция в Oracle 21c

  3. Функция TRIM() в Oracle

  4. Как да генерирате диаграма за връзка между обекти (ER) с помощта на Oracle SQL Developer

  5. Зареждане на данни за изображения в BLOB колони в Oracle