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

¡Orden de Oracle SQL por problemas de subconsulta!

Tanto dcw como Dems han proporcionado consultas alternativas apropiadas. Solo quería agregar una explicación de por qué su consulta no se está comportando de la manera que esperaba.

Si tiene una consulta que incluye ROWNUM y ORDER BY, Oracle aplica primero ROWNUM y luego ORDER BY. Así que la consulta

SELECT *
  FROM emp
 WHERE rownum <= 5
 ORDER BY empno

obtiene 5 filas arbitrarias del EMP mesa y los ordena, casi seguro que no es lo que se pretendía. Si desea obtener las "primeras N" filas con ROWNUM, deberá anidar la consulta. Esta consulta

SELECT *
  FROM (SELECT *
          FROM emp
         ORDER BY empno)
 WHERE rownum <= 5

ordena las filas en la tabla EMP y devuelve las primeras 5.