Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

sql (Oracle) untuk memilih 10 catatan pertama, lalu 10 berikutnya, dan seterusnya

Hanya ada cara yang agak berbelit-belit untuk melakukan ini, yang sangat merepotkan Oracle. Mereka hanya harus menerapkan klausa LIMIT/OFFSET...

Rownum ditugaskan setelah baris telah dipilih oleh klausa where, sehingga rownum harus selalu dimulai dengan 1. where rownum > x akan selalu bernilai false.

Juga, rownum ditugaskan sebelum penyortiran selesai , sehingga rownum tidak akan berada dalam urutan yang sama dengan pesanan Anda.

Anda dapat mengatasi kedua masalah dengan subpilihan:

 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

Jika Anda tidak perlu mengurutkan (tetapi hanya kemudian), Anda dapat menyederhanakannya menjadi

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Permintaan Oracle menggunakan 'suka' pada kolom nomor yang diindeks, kinerja buruk

  2. Kompilasi Prosedur ODP.NET

  3. Menukar nilai kolom di Oracle

  4. Permintaan Java dengan DB Link tidak menutup koneksi Db Link

  5. Gunakan dbms_xmldom.writetofile tanpa Direktori Bernama