sql >> Database >  >> RDS >> Oracle

De tweede rij van een tabel selecteren met rownum

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



  1. Aankondiging van repmgr 2.0RC2

  2. Schakel alle tabelindexen in Oracle uit en later weer in

  3. Gebruik COL_LENGTH() om de lengte van een kolom in SQL Server te krijgen

  4. Hoe laadt uw Oracle ODBC-stuurprogramma de Oracle-client?