Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengehadkan Baris dalam Pertanyaan Oracle Selepas Memesan?
Menghadkan Set Keputusan dalam Pertanyaan Oracle Tertib
Pseudocolumn ROWNUM
Oracle berbeza daripada klausa LIMIT
MySQL; ROWNUM
diberikan sebelum klausa ORDER BY
diproses. Oleh itu, penggunaan terus ROWNUM
tidak akan mengehadkan baris selepas memesan. Untuk mencapai matlamat ini, gunakan subkueri:
<code class="language-sql">SELECT * FROM (SELECT * FROM emp ORDER BY sal DESC) WHERE ROWNUM <= n;</code>
Pendekatan ini mula-mula memerintahkan jadual emp
mengikut gaji (sal
) menurun, kemudian pertanyaan luar menggunakan ROWNUM
untuk mengehadkan output ke baris n
atas.
Untuk senario yang lebih rumit yang memerlukan kedua-dua sempadan atas dan bawah, subkueri bersarang diperlukan:
<code class="language-sql">SELECT * FROM (SELECT a.*, ROWNUM rnum FROM (SELECT * FROM your_table ORDER BY your_column) a WHERE ROWNUM <= :MAX_ROW_TO_FETCH) WHERE rnum >= :MIN_ROW_TO_FETCH;</code>
Oracle 12c dan seterusnya
Oracle 12c (dan versi yang lebih baru) menawarkan sintaks yang lebih diperkemas menggunakan FETCH FIRST
dan OFFSET
:
<code class="language-sql">SELECT * FROM sometable ORDER BY name FETCH FIRST 10 ROWS ONLY;</code>
Ini secara langsung mengehadkan keputusan yang ditetapkan kepada 10 baris pertama selepas membuat pesanan oleh name
. Untuk menentukan offset (cth., langkau 20 baris pertama dan dapatkan 10 baris seterusnya), gunakan klausa OFFSET
:
<code class="language-sql">SELECT * FROM sometable ORDER BY name OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;</code>
Rujuk dokumentasi Oracle rasmi untuk contoh komprehensif dan strategi pengoptimuman prestasi.
Atas ialah kandungan terperinci Bagaimana untuk Mengehadkan Baris dalam Pertanyaan Oracle Selepas Memesan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!