sql >> Database >  >> RDS >> Oracle

Oracle SQL-volgorde in subquery-problemen!

Zowel dcw als Dems hebben passende alternatieve zoekopdrachten gegeven. Ik wilde alleen uitleggen waarom uw vraag niet werkt zoals u had verwacht.

Als u een query hebt die een ROWNUM en een ORDER BY bevat, past Oracle eerst de ROWNUM toe en vervolgens de ORDER BY. Dus de vraag

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

krijgt een willekeurige 5 rijen van de EMP tafel en sorteert ze - vrijwel zeker niet wat de bedoeling was. Als u de "eerste N" rijen wilt krijgen met ROWNUM, moet u de query nesten. Deze vraag

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

sorteert de rijen in de EMP-tabel en geeft de eerste 5 terug.



  1. Opgeslagen Oracle-procedure met parameters voor IN-clausule

  2. WordPress – Achter de schermen, deel 1

  3. Vergelijking van Entity Framework-compatibele providers voor Oracle?

  4. Voorbeeld van het gebruik van bind_result versus get_result