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

Valg af anden række i en tabel ved hjælp af rownum

For at forklare denne adfærd er vi nødt til at forstå, hvordan Oracle behandler ROWNUM. Når du tildeler ROWNUM til en række, starter Oracle med 1 og øger kun værdien, når en række er valgt; det vil sige, når alle betingelser i WHERE-klausulen er opfyldt. Da vores betingelse kræver, at ROWNUM er større end 2, vælges ingen rækker, og ROWNUM øges aldrig ud over 1.

Den nederste linje er, at forhold som de følgende vil fungere som forventet.

.. HVOR rækkenummer =1;

.. HVOR rækkenummer <=10;

Mens forespørgsler med disse betingelser altid vil returnere nul rækker.

.. HVOR rækkenummer =2;

.. HVOR rownum> 10;

Citeret fra Understanding Oracle rownum

Du bør ændre din forespørgsel på denne måde for at virke:

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

REDIGER :Jeg har rettet forespørgslen for at få rækkenummeret efter bestillingen ved salg desc.



  1. Konverter 'datetime' til 'time' i SQL Server (T-SQL-eksempler)

  2. Enum i Hibernate, fortsætter som en enum

  3. Brug af MySQLi fra en anden klasse i PHP

  4. Er der en PostgreSQL-ækvivalent til SQL Server-profiler?