Om dit gedrag te verklaren, moeten we begrijpen hoe Oracle ROWNUM verwerkt. Bij het toewijzen van ROWNUM aan een rij, begint Oracle bij 1 en verhoogt het alleen de waarde wanneer een rij is geselecteerd; dat wil zeggen, wanneer aan alle voorwaarden in de WHERE-component is voldaan. Aangezien onze voorwaarde vereist dat ROWNUM groter is dan 2, worden er geen rijen geselecteerd en wordt ROWNUM nooit hoger dan 1.
Het komt erop neer dat omstandigheden zoals de volgende naar verwachting zullen werken.
.. WAAR rijnummer =1;
.. WAAR rijnummer <=10;
Hoewel zoekopdrachten met deze voorwaarden altijd nul rijen opleveren.
.. WAAR rijnummer =2;
.. WAAR rijnummer> 10;
Geciteerd uit Oracle rownum begrijpen
U moet uw zoekopdracht op deze manier aanpassen om te kunnen werken:
select empno
from
(
select empno, rownum as rn
from (
select empno
from emp
order by sal desc
)
)
where rn=2;
BEWERKEN :ik heb de zoekopdracht gecorrigeerd om het rijnummer na . te krijgen de bestelling door sal desc