Apakah ada cara untuk membuat Oraclekueri berperilaku seperti mengandung MySQL limitklausa?
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 rownumpseudo-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.