sql >> Databasteknik >  >> RDS >> Oracle

sql (oracle) för att välja de första 10 posterna, sedan de nästa 10, och så vidare

Det finns bara ett ganska invecklat sätt att göra detta på, vilket är riktigt jobbigt med Oracle. De borde bara implementera en LIMIT/OFFSET-klausul...

Radnumret tilldelas efter raden har valts av where-satsen, så att ett rownum alltid måste börja med 1. where rownum > x kommer alltid att utvärderas till falskt.

Dessutom tilldelas rownum innan sorteringen är klar , så radnumret kommer inte att vara i samma ordning som din beställning av säger.

Du kan komma runt båda problemen med ett underval:

 select a,b,c, rn from 
    ( select a,b,c, rownum rn from 
         ( select a,b,c from the_table where x = ? order by c)
      where rownum < Y)
  where rn > X

Om du inte behöver sortera (men bara då) kan du förenkla till

 select a,b,c, rn from
     ( select a,b,c, rownum rn from the_table where rownum < Y )
   where rn > X


  1. Hur hittar man parametrar i Oracle-frågan som tas emot från v$sql?

  2. MYSQL - En kolumn med referens till flera tabeller

  3. Hur man importerar formfil till MySQL

  4. Hur kan jag påskynda databasprocessen?