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

Oracle/SQL:Por que a consulta SELECT * FROM records WHERE rownum>=5 AND rownum <=10 - retorna zero linhas


No Oracle, os valores Rownum são atribuídos após o estágio de filtragem da consulta - eles não são linhas da tabela, são linhas do conjunto de resultados da consulta.

Portanto, a primeira linha que retornar sempre receberá o rownum 1, a segunda linha que retornar o rownum 2, etc.

O valor rownum só é incrementado após ser atribuído, portanto, qualquer consulta como
select * from t where ROWNUM > 1

será nunca retornar quaisquer resultados. Esta consulta diz 'Eu não quero ver a primeira linha que é retornada para mim, apenas as que vêm depois', o que é meio que um paradoxo, então nada é retornado.

Veja Ask Tom:On ROWNUM e Limitando Resultados para mais detalhes.