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

sql (oracle) for at vælge de første 10 poster, derefter de næste 10, og så videre

Der er kun en ret indviklet måde at gøre dette på, hvilket er en rigtig smerte med Oracle. De skal bare implementere en LIMIT/OFFSET-klausul...

Rækkenummeret tildeles efter rækken er valgt af where-sætningen, så et rækkenummer altid skal starte med 1. where rownum > x vil altid vurderes til falsk.

Rownum bliver også tildelt inden sorteringen er udført , så rækken vil ikke være i samme rækkefølge som din ordre ved siger.

Du kan omgå begge problemer med et undervalg:

 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

Hvis du ikke har brug for at sortere (men kun derefter), kan du forenkle til

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


  1. SQL:Flyt kolonnedata til en anden tabel i samme relation

  2. Hvordan @@MAX_CONNECTIONS virker i SQL Server

  3. Dynamisk Linq-fejl ved brug af Contains mod Int Field

  4. Hvordan man skriver en brugerdefineret CrudRepository-metode(@Query) for at filtrere resultatet i mit tilfælde