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

obteniendo datos usando rownum en oracle

rownum es una pseudocolumna que cuenta filas en el conjunto de resultados después de que se haya aplicado la cláusula where.

  SELECT table_name
    FROM user_tables
    WHERE rownum > 2;
TABLE_NAME                     
------------------------------

0 rows selected

Sin embargo, esta consulta siempre devolverá cero filas, independientemente del número de filas de la tabla.

Para explicar este comportamiento, necesitamos entender cómo Oracle procesa ROWNUM. Al asignar ROWNUM a una fila, Oracle comienza en 1 y solo incrementa el valor cuando se selecciona una fila; es decir, cuando se cumplen todas las condiciones de la cláusula WHERE. Dado que nuestra condición requiere que ROWNUM sea mayor que 2, no se seleccionan filas y ROWNUM nunca se incrementa más allá de 1.

http://blog.lishman.com/2008/03/rownum.html

otro enlace de stackoverflow

Editado

este párrafo lo encuentro en oracle sitio web que es mucho mejor

Las condiciones que prueban valores ROWNUM mayores que un entero positivo siempre son falsas. Por ejemplo, esta consulta no devuelve filas:

SELECT * FROM employees
    WHERE ROWNUM > 1;

A la primera fila recuperada se le asigna un ROWNUM de 1 y hace que la condición sea falsa. La segunda fila que se recuperará ahora es la primera fila y también se le asigna un ROWNUM de 1 y hace que la condición sea falsa. Todas las filas posteriormente no cumplen la condición, por lo que no se devuelven filas.

También puede usar ROWNUM para asignar valores únicos a cada fila de una tabla, como en este ejemplo: