El número de fila de Oracle comienza en 1, por lo que nunca obtendrá el primer número de fila si dice between 2 and N
.
Se necesita una fila para "iniciar" la secuencia de pseudocolumnas de número de fila, por lo que al eliminar el número de fila 1 en sus criterios, elimina todos los números de fila (o cada fila tiene esencialmente número de fila 0
).
Míralo así. No obtiene un ROWNUM hasta que la base de datos le devuelve una fila. La primera fila de cualquier criterio siempre será ROWNUM 1.
Ahora, el truco que puedes usar es usar una subconsulta. Cada subconsulta tendrá su propio número de fila, y si le asigna un alias a otro nombre de columna, puede conservarla en consultas externas y tratarla como desee. Entonces, si está buscando implementar la paginación de un conjunto de resultados, normalmente usaría un alias de rownum de los resultados internos como rownum_ a una subconsulta externa para limitar con BETWEEN.
select * from
(select t.*, rownum as rownum_ from t)
where rownum_ between 2 and 6
Pero tenga en cuenta que el conjunto de resultados externo tendrá su propio número de fila, por lo que podría hacer:
select t2.*, rownum from
(select a, b, rownum as rownum_ from t) t2
where rownum_ between 2 and 6
Verá rownum
en el resultado final aún comienza en 1, pero su resultado interno tendrá rownum_
a partir de las 2.