sql >> Databasteknik >  >> RDS >> Oracle

Välj den andra raden i en tabell med hjälp av rownum

För att förklara detta beteende måste vi förstå hur Oracle bearbetar ROWNUM. När du tilldelar ROWNUM till en rad, börjar Oracle med 1 och ökar endast värdet när en rad väljs; det vill säga när alla villkor i WHERE-satsen är uppfyllda. Eftersom vårt villkor kräver att ROWNUM är större än 2, väljs inga rader och ROWNUM ökas aldrig mer än 1.

Summan av kardemumman är att tillstånd som följande kommer att fungera som förväntat.

.. WHERE rownum =1;

.. WHERE rownum <=10;

Medan frågor med dessa villkor alltid returnerar noll rader.

.. WHERE rownum =2;

.. WHERE rownum> 10;

Citerat från Understanding Oracle rownum

Du bör ändra din fråga på detta sätt för att fungera:

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

REDIGERA :Jag har korrigerat frågan för att få radnumret efter beställningen av sal desc



  1. SQL Server:Gör alla versaler till skiftläge/titel

  2. Uppdatera data i en MySQL-databas

  3. Tuning SQL

  4. Integrering av SQLCipher med greenDAO