Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengehadkan Baris dalam Pertanyaan Oracle Selepas Memesan?

Bagaimana untuk Mengehadkan Baris dalam Pertanyaan Oracle Selepas Memesan?

Linda Hamilton
Linda Hamiltonasal
2025-01-25 08:41:12341semak imbas

How to Limit Rows in Oracle Queries After Ordering?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn