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

wiersz numer nie wyświetla żadnych wierszy podczas używania między słowem kluczowym

Oracle rownum zaczyna się od 1, więc nigdy nie otrzymasz pierwszego rzędu, jeśli powiesz between 2 and N .

Potrzeba wiersza, aby "zainicjować" sekwencję pseudokolumny rownum, więc eliminując rownum 1 w swoich kryteriach, eliminujesz wszystkie rownums (lub każdy wiersz zasadniczo ma rownum 0 ).

Spójrz na to w ten sposób. Nie otrzymasz ROWNUM, dopóki baza danych nie zwróci Ci wiersza. Pierwszy wiersz dowolnych kryteriów zawsze będzie miał wartość ROWNUM 1.

Teraz sztuczka, której możesz użyć, polega na użyciu podzapytania. Każde podzapytanie będzie miało swój własny numer wiersza, a jeśli skojarzysz je z inną nazwą kolumny, możesz zachować je w zapytaniach zewnętrznych i potraktować je w dowolny sposób. Więc jeśli chcesz zaimplementować stronicowanie zestawu wyników, zwykle aliasujesz rownum z wewnętrznych wyników jako rownum_ do zewnętrznego podzapytania, aby ograniczyć je za pomocą BETWEEN.

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

Pamiętaj jednak, że zewnętrzny zestaw wyników będzie miał swój własny numer wiersza, więc możesz zrobić:

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

Zobaczysz rownum na końcowym wyniku nadal zaczyna się od 1, ale Twój wewnętrzny wynik będzie miał rownum_ od 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. jak zmodyfikować istniejące ograniczenie sprawdzania?

  2. REPLACE() Funkcja w Oracle

  3. Jak Java dla OS X 2013-004 wpływa (przerwa) na aplikacje Swing?

  4. Labirynt dostrajania wydajności

  5. Czy powinienem usunąć lub wyłączyć wiersz w relacyjnej bazie danych?