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

изберете rownum от заплата, където rownum=3;

Oracle присвоява стойности на ROWNUM последователно, когато редовете се произвеждат от заявката - по този начин първият извлечен ред получава ROWNUM=1, вторият извлечен ред получава ROWNUM=2, третият извлечен ред получава ROWNUM=3 и т.н. Забележка - за ред да бъде присвоен ROWNUM=3 ТРЯБВА да бъдат извлечени два предходни реда. И ето защо вашата заявка не връща редове. Питате базата данни за извлечения трети ред - но редове 1 и 2 никога не са били извлечени.

За да демонстрирате, опитайте да изпълните следните заявки:

SELECT S.* FROM SALARY S;          -- Should return all rows
SELECT ROWNUM, S.* FROM SALARY S;  -- Should return all rows with ROWNUM prepended
SELECT ROWNUM, S.* FROM SALARY WHERE ROWNUM=3;  -- Should return no rows

За да заобиколите проблема си, опитайте следното:

SELECT ROW_NUMBER FROM
  (SELECT ROWNUM AS ROW_NUMBER, S.* FROM SALARY S)
  WHERE ROW_NUMBER = 3;

Споделете и се насладете.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Получаване на допълнителни редове - След присъединяване към 3-те маси с помощта на Left Join

  2. Въведение в обработката на изключения PL/SQL в базата данни на Oracle

  3. Как да обработваме изключенията to_date в оператор SELECT, за да игнорирате тези редове?

  4. когато вмъкнете персийски символ в oracle db, виждам въпросителния знак

  5. отпечатайте начална и крайна дата в един ред за непрекъснати или припокриващи се периоди от време в oracle SQL