Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Auswählen der zweiten Zeile einer Tabelle mit rownum

Um dieses Verhalten zu erklären, müssen wir verstehen, wie Oracle ROWNUM verarbeitet. Bei der Zuweisung von ROWNUM zu einer Zeile beginnt Oracle bei 1 und erhöht den Wert nur, wenn eine Zeile ausgewählt ist; das heißt, wenn alle Bedingungen in der WHERE-Klausel erfüllt sind. Da unsere Bedingung erfordert, dass ROWNUM größer als 2 ist, werden keine Zeilen ausgewählt und ROWNUM wird nie über 1 hinaus erhöht.

Unterm Strich funktionieren Bedingungen wie die folgenden wie erwartet.

.. WHERE rownum =1;

.. WHERE Zeilennummer <=10;

Während Abfragen mit diesen Bedingungen immer null Zeilen zurückgeben.

.. WHERE rownum =2;

.. WHERE rownum> 10;

Zitiert aus Oracle Rownum verstehen

Sie sollten Ihre Abfrage folgendermaßen ändern, damit sie funktioniert:

select empno
from
    (
    select empno, rownum as rn 
    from (
          select empno
          from emp
          order by sal desc
          )
    )
where rn=2;

BEARBEITEN :Ich habe die Abfrage korrigiert, um die Zeilennummer nach zu erhalten die reihenfolge von sal desc