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
Lepaskan: 2025-01-25 08:41:12
asal
368 orang telah melayarinya

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:

SELECT *
FROM (SELECT * FROM emp ORDER BY sal DESC)
WHERE ROWNUM <= n;
Salin selepas log masuk

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:

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;
Salin selepas log masuk

Oracle 12c dan seterusnya

Oracle 12c (dan versi yang lebih baru) menawarkan sintaks yang lebih diperkemas menggunakan FETCH FIRST dan OFFSET:

SELECT *
FROM sometable
ORDER BY name
FETCH FIRST 10 ROWS ONLY;
Salin selepas log masuk

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:

SELECT *
FROM sometable
ORDER BY name
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan