Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Ordem SQL do Oracle em problemas de subconsulta!


Tanto o dcw quanto o Dems forneceram consultas alternativas apropriadas. Eu só queria dar uma explicação de por que sua consulta não está se comportando da maneira que você esperava.

Se você tiver uma consulta que inclua um ROWNUM e um ORDER BY, a Oracle aplicará primeiro o ROWNUM e depois o ORDER BY. Então a consulta
SELECT *
  FROM emp
 WHERE rownum <= 5
 ORDER BY empno

obtém 5 linhas arbitrárias do EMP tabela e os classifica - quase certamente não o que se pretendia. Se você quiser obter as "primeiras N" linhas usando ROWNUM, precisará aninhar a consulta. Esta consulta
SELECT *
  FROM (SELECT *
          FROM emp
         ORDER BY empno)
 WHERE rownum <= 5

classifica as linhas na tabela EMP e retorna as 5 primeiras.