sql >> Databáze >  >> RDS >> Oracle

Výběr druhého řádku tabulky pomocí rownum

Abychom toto chování vysvětlili, musíme pochopit, jak Oracle zpracovává ROWNUM. Při přiřazování ROWNUM řádku začíná Oracle na 1 a zvyšuje hodnotu pouze při výběru řádku; to znamená, když jsou splněny všechny podmínky v klauzuli WHERE. Protože naše podmínka vyžaduje, aby ROWNUM bylo větší než 2, nejsou vybrány žádné řádky a ROWNUM se nikdy nezvyšuje nad 1.

Pointa je, že podmínky jako následující budou fungovat podle očekávání.

.. WHERE rownum =1;

.. WHERE rownum <=10;

Zatímco dotazy s těmito podmínkami vždy vrátí nula řádků.

.. WHERE rownum =2;

.. WHERE rownum> 10;

Citováno z Understanding Oracle rownum

Měli byste svůj dotaz upravit tímto způsobem, aby fungoval:

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

UPRAVIT :Opravil jsem dotaz, abych získal rownum po objednávka podle sal desc



  1. Jak nastavit MariaDB, aby používala vertikální výstup

  2. Jak odstranit virtuální počítač z VirtualBoxu

  3. Jaké je použití funkce DECODE v SQL?

  4. Nějaký dopad na výkon v Oracle při použití LIKE 'string' vs ='string'?