Apakah ada cara untuk membuat Oracle
kueri berperilaku seperti mengandung MySQL limit
klausa?
Dalam MySQL
, saya bisa melakukan ini:
select *
from sometable
order by name
limit 20,10
untuk mendapatkan baris ke-21 hingga ke-30 (lewati 20 pertama, berikan 10 berikutnya). Baris dipilih setelah order by
, jadi itu benar-benar dimulai pada nama ke-20 secara abjad.
Dalam Oracle
, satu-satunya hal yang orang sebutkan adalah rownum
pseudo-kolom, tetapi dievaluasi sebelumnya order by
, yang artinya:
select *
from sometable
where rownum <= 10
order by name
akan mengembalikan satu set acak sepuluh baris yang dipesan dengan nama, yang biasanya tidak saya inginkan. Itu juga tidak memungkinkan untuk menentukan offset.
ORDER BY
. Itulah inti dari pemesanan terlebih dahulu. Jika data yang mendasarinya berubah dan hasil Anda menyetel perubahan karenanya, mengapa tidak menunjukkan kepada pengguna hasil yang diperbarui alih-alih informasi yang ketinggalan zaman? Juga, manajemen negara adalah wabah yang harus dihindari sebanyak mungkin. Ini merupakan sumber komplikasi dan bug yang konstan; itu sebabnya fungsional menjadi sangat populer. Dan kapan Anda tahu akan berakhir seluruh hasil yang diatur dalam memori? Di web, Anda tidak memiliki cara untuk mengetahui kapan pengguna pergi.