Oracle
 sql >> Baza danych >  >> RDS >> Oracle

wybierz rownum z pensji, gdzie rownum=3;

Oracle przypisuje wartości do ROWNUM sekwencyjnie, gdy wiersze są tworzone przez zapytanie — w ten sposób pierwszy pobrany wiersz otrzymuje ROWNUM=1, drugi pobierany jest ROWNUM=2, trzeci pobierany wiersz otrzymuje ROWNUM=3 itd. Uwaga — dla wiersza do przypisania ROWNUM=3 dwa poprzednie wiersze MUSZĄ zostać pobrane. I dlatego zapytanie nie zwraca żadnych wierszy. Pytasz bazę danych o pobranie trzeciego wiersza — ale wiersze 1 i 2 nigdy nie zostały pobrane.

Aby to zademonstrować, spróbuj uruchomić następujące zapytania:

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

Aby obejść problem, wypróbuj następujące rozwiązania:

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

Dziel się i ciesz.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaki jest najlepszy sposób sprawdzenia, z której wersji klienta Oracle korzystam?

  2. Macierz obsługiwanych wersji Oracle

  3. Jak znaleźć różnice w formacie B/W TIMESTAMP w Oracle?

  4. Funkcja HEXTORAW() w Oracle

  5. Hibernate on Oracle:mapowanie właściwości String na kolumnę CLOB