sql >> Databasteknik >  >> RDS >> Oracle

Oracle SQL ordning efter i subquery problem!

Både dcw och Dems har tillhandahållit lämpliga alternativa frågor. Jag ville bara slänga in en förklaring till varför din fråga inte beter sig som du förväntade dig.

Om du har en fråga som innehåller en ROWNUM och en ORDER BY, tillämpar Oracle först ROWNUM och sedan ORDER BY. Så frågan

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

får godtyckliga 5 rader från EMP bord och sorterar dem - nästan säkert inte vad som var tänkt. Om du vill få de "första N" raderna med ROWNUM, måste du kapsla frågan. Denna fråga

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

sorterar raderna i EMP-tabellen och returnerar de första 5.



  1. Vad kan Query Plan berätta?

  2. Dödläge i Oracle

  3. MySQL-fråga GRUPPER EFTER dag/månad/år

  4. Vad är sekventiella kontra parallella strömmar i Java?