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

Oracle/SQL:Dlaczego zapytanie SELECT * FROM rekordy WHERE rownum>=5 AND rownum <=10 - zwraca zero wierszy

W Oracle wartości Rownum są przypisywane po etapie filtrowania zapytania - nie są wierszami tabeli, są wierszami zestawu wyników zapytania.

Tak więc pierwszy wiersz, który zwróci, zawsze otrzyma wiersz numer 1, drugi wiersz, który zwróci wiersz numer 2, itd.

Wartość rownum jest zwiększana dopiero po jej przypisaniu, więc każde zapytanie, takie jak

select * from t where ROWNUM > 1

nigdy zwrócić wszelkie wyniki. To zapytanie mówi „Nie chcę widzieć pierwszego wiersza, który jest do mnie zwracany, tylko następne”, co jest swego rodzaju paradoksem, więc nic nie jest zwracane.

Zobacz Zapytaj Toma:On ROWNUM i Ograniczanie wyników, aby uzyskać więcej informacji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Generuj dane testowe za pomocą programisty Oracle PL/SQL

  2. Dlaczego porządek sortowania varchar Oracle nie odpowiada zachowaniu porównania varchar?

  3. Jak przekazać argumenty do skryptu PL/SQL w wierszu poleceń za pomocą SQLPLUS?

  4. Jaki typ obiektu zwraca metoda wykonania Spring Hibernate Template dla zapytania zliczającego w Oracle?

  5. Czy ODP.NET jest wymagany dla klienta Oracle 11g?