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

row num не показва никакви редове при използване на ключова дума между

Oracle rownum започва от 1, така че никога няма да получите първия rownum, ако кажете between 2 and N .

Необходим е ред, за да "инициира" псевдоколона на rownum, така че чрез елиминиране на rownum 1 във вашите критерии, вие елиминирате всички rownums (или всеки ред по същество има rownum 0 ).

Погледнете го така. Не получавате ROWNUM, докато базата данни не ви върне ред. Първият ред от всеки критерий винаги ще бъде ROWNUM 1.

Сега, трикът, който можете да използвате, е да използвате подзаявка. Всяка подзаявка ще има свой собствен номер на ред и ако я присвоите на друго име на колона, можете да я запазите във външни заявки и да я третирате както желаете. Така че, ако искате да внедрите пейджинг на набор от резултати, обикновено бихте направили псевдоним rownum от вътрешни резултати като rownum_ към външна подзаявка, за да ограничите с BETWEEN.

select * from 
  (select t.*, rownum as rownum_ from t)
where rownum_ between 2 and 6

Но имайте предвид, че външният набор от резултати ще има свой собствен номер на ред, така че можете да направите:

select t2.*, rownum from 
  (select a, b, rownum as rownum_ from t) t2
where rownum_ between 2 and 6

Ще видите rownum на крайния резултат все още започва от 1, но вашият вътрешен резултат ще има rownum_ от 2.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да генерирам (или да получа) ddl скрипт на съществуваща таблица в oracle? Трябва да ги създам отново в Hive

  2. Управляван ODP.NET драйвер не се показва в диалоговия прозорец за източник на данни

  3. Явни JOIN срещу неявни присъединявания?

  4. Неподредени резултати в SQL

  5. разлика между NLS_NCHAR_CHARACTERSET и NLS_CHARACTERSET за Oracle