sql >> Base de Datos >  >> RDS >> Oracle

Seleccionando la segunda fila de una tabla usando rownum

Para explicar este comportamiento, necesitamos entender cómo Oracle procesa ROWNUM. Al asignar ROWNUM a una fila, Oracle comienza en 1 y solo incrementa el valor cuando se selecciona una fila; es decir, cuando se cumplen todas las condiciones de la cláusula WHERE. Dado que nuestra condición requiere que ROWNUM sea mayor que 2, no se seleccionan filas y ROWNUM nunca se incrementa más allá de 1.

La conclusión es que condiciones como las siguientes funcionarán como se esperaba.

.. DONDE número de filas =1;

.. DONDE número de fila <=10;

Mientras que las consultas con estas condiciones siempre devolverán cero filas.

.. DONDE número de filas =2;

.. DONDE número de fila> 10;

Citado de Comprender Oracle rownum

Debe modificar su consulta de esta manera para que funcione:

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

EDITAR :he corregido la consulta para obtener el número de fila después el pedido por sal desc