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

Oracle/SQL:¿Por qué la consulta SELECT * FROM registros DONDE número de fila>=5 Y número de fila <=10 - devuelve cero filas

En Oracle, los valores Rownum se asignan después de la etapa de filtrado de la consulta; no son filas de la tabla, son filas del conjunto de resultados de la consulta.

Entonces, la primera fila que regresa siempre recibirá el número de fila 1, la segunda fila que regresa el número de fila 2, etc.

El valor de número de fila solo se incrementa después de que se asigna, por lo que cualquier consulta como

select * from t where ROWNUM > 1

nunca devolver ningún resultado. Esta consulta dice "No quiero ver la primera fila que se me devuelve, solo las siguientes", lo cual es una especie de paradoja, por lo que no se devuelve nada.

Consulte Ask Tom:On ROWNUM y Limiting Results para obtener más detalles.