Oracle
 sql >> Database >  >> RDS >> Oracle

riga num non visualizza alcuna riga quando si utilizza la parola chiave tra

Oracle rownum inizia da 1, quindi non otterrai mai il primo rownum se dici between 2 and N .

Ci vuole una riga per "avviare" la sequenza della pseudocolonna rownum, quindi eliminando rownum 1 nei tuoi criteri, elimini tutti i rownum (o ogni riga ha essenzialmente rownum 0 ).

Vedila in questo modo. Non ottieni un ROWNUM finché il database non ti restituisce una riga. La prima riga di qualsiasi criterio sarà sempre ROWNUM 1.

Ora, il trucco che puoi usare è usare una sottoquery. Ogni sottoquery avrà il proprio numero di riga e, se lo alias con un altro nome di colonna, puoi conservarlo in query esterne e trattarlo come preferisci. Quindi, se stai cercando di implementare il paging di un set di risultati, normalmente alias rownum dai risultati interni come rownum_ a una sottoquery esterna da limitare con BETWEEN.

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

Ma nota che il set di risultati esterno avrà il proprio numero di riga, quindi potresti fare:

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

Vedrai rownum sul risultato finale parte ancora da 1, ma il tuo risultato interno avrà rownum_ a partire da 2.