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

извличане на данни с помощта на rownum в oracle

rownum е псевдо колона, която брои редовете в резултатния набор след прилагане на клаузата where.

  SELECT table_name
    FROM user_tables
    WHERE rownum > 2;
TABLE_NAME                     
------------------------------

0 rows selected

Тази заявка обаче винаги ще връща нула редове, независимо от броя на редовете в таблицата.

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

http://blog.lishman.com/2008/03/rownum.html

друга връзка към stackoverflow

Редактирано

този параграф намирам в oracle уебсайт, който е много по-добър

Тестване на условия за стойности ROWNUM, по-големи от положително цяло число, винаги са неверни. Например тази заявка не връща нито един ред:

SELECT * FROM employees
    WHERE ROWNUM > 1;

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

Можете също да използвате ROWNUM, за да присвоите уникални стойности на всеки ред от таблица, както в този пример:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да върна няколко реда чрез pl/sql съхранена функция?

  2. ASP.NET MVC5 - Поддържане на потребителите в Oracle Database

  3. Как да преглеждам бази данни на сървър на Oracle?

  4. Как да добавя последната секунда към датата?

  5. БЛОКИРАНа нишка при изпълнение на процедура на Oracle от Java клас