Por Geymer Morales Cruz

Compartiendo Información...

Obtener los primeros registros en una Consulta ORACLE

Hola buenas, nuevamente por acá compartiendo información que les puede ser útil. Hoy aprenderemos a utilizar el ROWNUM en motores Oracle. Pues bien muchas veces puede que tengamos la necesidad de obtener los primeros 5 registros o 10 registros en una consulta y es donde nos preguntamos cómo hacerlo.
ROWNUM es una columna mágica que existe en Oracle y si aprendemos como funciona nos puede ser de gran utilidad, esta columna la podemos usar

  1. Para obtener los primeros N registros: Similar a la cláusula LIMIT utilizado en otras bases de datos.
  2.  Para paginar resultados, típico en ambientes web.
Es importante tener en cuenta que ROWNUM es una pseudocolumna (no es una columna real) que está disponible en los resultados de las querys. Un ROWNUM no es asignado permanentemente a una fila(un error de concepto muy común) UNA FILA EN UNA TABLA NO TIENE NINGUN NUMERO ASIGNADO, no se puede pedir que te devuelva la fila 5 de una tabla, eso no existe así no funciona el ROWNUM.

Bien probemos la siguiente consulta

Select Micolumna1, Micolumna2,rownum from Mitabla

Si vemos esto retornara los datos con una columna de más con un número asignado.

Apliquemos el ROWNUM

Supongamos que necesitamos obtener los 5 empleados mejor pagados de nuestra empresa:

select * from  
(select * 
 from emp 
 order by sal desc) 
 where ROWNUM <= 5;

Errores comunes ROWNUM 

Consideremos la siguiente consulta:

select * 
from emp 
where ROWNUM <= 5 
order by sal desc;

Muchos talvez dirán que también obtendrá los 5 empleados mejores pagados, bueno la intención era esa pero realmente lo que la query va a retornar solo los primeros 5 registros aleatorios(los primero 5 que encuentre) ordenados por salario.

Espero que este pequeño post sea de gran utilidad hasta la próxima….

3 comentarios:

Anónimo dijo...

SUPER GRACIAS, EN VERDAD SI ME AYUDO MUUCHISIMO
DIOS LOS LLENE DE BENDICIONES

Geymer Morales Cruz dijo...

Bendiciones igual, me alegra que te ayudara...

Anónimo dijo...

Buen aporte y muy util!!!, gracias por compartir tus conocimientos.