sql >> Database teknologi >  >> RDS >> Oracle

Oracle SQL rækkefølge efter i underforespørgselsproblemer!

Både dcw og Dems har leveret passende alternative forespørgsler. Jeg ville bare give en forklaring på, hvorfor din forespørgsel ikke opfører sig, som du havde forventet.

Hvis du har en forespørgsel, der inkluderer en ROWNUM og en ORDER BY, anvender Oracle først ROWNUM og derefter ORDER BY. Så forespørgslen

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

får vilkårlige 5 rækker fra EMP bord og sorterer dem - næsten helt sikkert ikke, hvad der var meningen. Hvis du vil have de "første N" rækker ved hjælp af ROWNUM, skal du indlejre forespørgslen. Denne forespørgsel

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

sorterer rækkerne i EMP-tabellen og returnerer de første 5.



  1. Hvordan jeg gemmer og henter et billede på min server i en java webapp

  2. Begår du disse fejl, når du bruger SQL CURSOR?

  3. Sammenligning af datoer i Oracle SQL

  4. Hvorfor gik min MySQL-database ned? Få indsigt med den nye MySQL Freeze Frame