Rumah > pangkalan data > tutorial mysql > Bagaimana untuk mengehadkan keputusan baris dalam pertanyaan Oracle selepas membuat pesanan?

Bagaimana untuk mengehadkan keputusan baris dalam pertanyaan Oracle selepas membuat pesanan?

Susan Sarandon
Lepaskan: 2025-01-25 08:37:10
asal
502 orang telah melayarinya

How to Limit Row Results in Oracle Queries After Ordering?

Hadkan bilangan baris hasil selepas mengisih dalam pangkalan data Oracle

Ramai pengguna pangkalan data bergantung pada klausa LIMIT MySQL untuk mendapatkan julat baris tertentu selepas mengisih. Walau bagaimanapun, Oracle sendiri tidak menyokong fungsi yang serupa. Oracle menggunakan lajur pseudo ROWNUM, yang dikira sebelum ORDER BY. Tingkah laku ini boleh menyebabkan hasil yang tidak dijangka apabila cuba mengehadkan bilangan baris berdasarkan pengisihan.

Untuk mencapai fungsi sekatan seperti MySQL dalam Oracle, satu penyelesaian ialah menggunakan subquery. Pertimbangkan contoh berikut:

<code class="language-sql">SELECT *
FROM (
    SELECT *
    FROM emp
    ORDER BY sal DESC
)
WHERE ROWNUM <= 5;</code>
Salin selepas log masuk

Pertanyaan ini akan mendapatkan semula 5 baris pertama dalam tertib menurun mengikut lajur sal.

Untuk lebih fleksibiliti, anda boleh menggunakan kaedah berikut:

<code class="language-sql">SELECT *
FROM (
    SELECT *, ROWNUM AS rnum
    FROM (
        SELECT *
        FROM emp
        ORDER BY sal DESC
    ) AS a
)
WHERE rnum >= :MIN_ROW_TO_FETCH AND rnum <= :MAX_ROW_TO_FETCH;</code>
Salin selepas log masuk

Subkueri ini membolehkan anda menentukan sempadan bawah dan atas untuk mendapatkan semula baris.

Selain itu, Oracle 12c (12.1) memperkenalkan sintaks baharu:

<code class="language-sql">-- 获取前10个结果
SELECT *
FROM sometable
ORDER BY name
FETCH FIRST 10 ROWS ONLY;

-- 获取第20-30个结果行
SELECT *
FROM sometable
ORDER BY name
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;</code>
Salin selepas log masuk

Sintaks ini menyediakan cara yang lebih bersih untuk mengehadkan bilangan baris hasil berdasarkan pengisihan.

Atas ialah kandungan terperinci Bagaimana untuk mengehadkan keputusan baris dalam pertanyaan Oracle selepas membuat pesanan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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