sql >> Databáze >  >> RDS >> Oracle

sql (oracle) pro výběr prvních 10 záznamů, poté dalších 10 atd

Existuje pouze poněkud komplikovaný způsob, jak toho dosáhnout, což je s Oracle skutečnou bolestí. Měli by pouze implementovat klauzuli LIMIT/OFFSET...

Řádkové číslo bude přiřazeno po řádek byl vybrán klauzulí where, takže rownum musí vždy začínat 1. where rownum > x bude vždy vyhodnocena jako nepravda.

Také rownum je přiřazeno před dokončením řazení , takže rownum nebude ve stejném pořadí, jako říká vaše objednávka.

Oba problémy můžete obejít pomocí dílčího výběru:

 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

Pokud nepotřebujete třídit (ale pouze tehdy), můžete zjednodušit na

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


  1. spustit soubor *.sql pomocí pythonu MySQLdb

  2. Parametry CDbCriteria s třídami regex znaků

  3. Co znamená FixedLenNullInSource v sp_help?

  4. Anotace Spring Boot Query s nativeQuery nefunguje v Postgresql