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

seleccione número de fila del salario donde número de fila =3;

Oracle asigna valores a ROWNUM secuencialmente a medida que la consulta produce filas; por lo tanto, la primera fila obtenida obtiene ROWNUM=1, la segunda fila obtenida obtiene ROWNUM=2, la tercera fila obtenida obtiene ROWNUM=3, etc. Aviso:para una fila para que se le asigne ROWNUM=3, DEBEN obtenerse dos filas anteriores. Y es por eso que su consulta no devuelve filas. Le está solicitando a la base de datos la tercera fila recuperada, pero las filas 1 y 2 nunca se han recuperado.

Para demostrarlo, intente ejecutar las siguientes consultas:

SELECT S.* FROM SALARY S;          -- Should return all rows
SELECT ROWNUM, S.* FROM SALARY S;  -- Should return all rows with ROWNUM prepended
SELECT ROWNUM, S.* FROM SALARY WHERE ROWNUM=3;  -- Should return no rows

Para solucionar su problema, intente lo siguiente:

SELECT ROW_NUMBER FROM
  (SELECT ROWNUM AS ROW_NUMBER, S.* FROM SALARY S)
  WHERE ROW_NUMBER = 3;

Comparte y disfruta.