Oracle rijnummer begint bij 1, dus je krijgt nooit het eerste rijnummer als je between 2 and N
zegt .
Er is een rij nodig om de rijnummer-pseudokolomreeks te "initieren", dus door rijnummer 1 in uw criteria te elimineren, elimineert u alle rijnummers (of elke rij heeft in wezen rijnummer 0
).
Bekijk het zo. U krijgt geen ROWNUM totdat de database een rij naar u terugstuurt. De eerste rij van elk criterium is altijd ROWNUM 1.
De truc die u kunt gebruiken, is om een subquery te gebruiken. Elke subquery heeft zijn eigen rownum, en als u het een alias geeft naar een andere kolomnaam, kunt u het bewaren in buitenste query's en het behandelen zoals u wilt. Dus als je paging van een resultatenset wilt implementeren, alias je rownum normaal gesproken van inner results als rownum_ naar een outer subquery om te beperken met TUSSEN.
select * from
(select t.*, rownum as rownum_ from t)
where rownum_ between 2 and 6
Houd er echter rekening mee dat de buitenste resultaatset zijn eigen rijnummer heeft, dus u kunt het volgende doen:
select t2.*, rownum from
(select a, b, rownum as rownum_ from t) t2
where rownum_ between 2 and 6
U ziet rownum
op het eindresultaat begint nog steeds bij 1, maar je innerlijke resultaat zal rownum_
. hebben vanaf 2.