Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

selecione rownum do salário onde rownum=3;


O Oracle atribui valores a ROWNUM sequencialmente à medida que as linhas são produzidas pela consulta - assim, a primeira linha buscada obtém ROWNUM=1, a segunda linha buscada obtém ROWNUM=2, a terceira linha buscada obtém ROWNUM=3, etc. Aviso - para uma linha para ser atribuído ROWNUM=3 duas linhas anteriores DEVEM ser buscadas. E é por isso que sua consulta não retorna nenhuma linha. Você está solicitando ao banco de dados a terceira linha buscada - mas as linhas 1 e 2 nunca foram buscadas.

Para demonstrar, tente executar as seguintes 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 contornar seu problema, tente o seguinte:
SELECT ROW_NUMBER FROM
  (SELECT ROWNUM AS ROW_NUMBER, S.* FROM SALARY S)
  WHERE ROW_NUMBER = 3;

Compartilhe e curta.