Prinsip pertanyaan paging Oracle: 1. Pertanyaan menggunakan ciri medan rownum ORACLE 2. Tanya bilangan N keping data yang ditentukan 3. Alih keluar M keping data daripada bilangan N keping pertanyaan keputusan; 4. Dalam pembangunan web, dengan melepasi M dan N sebagai parameter, anda boleh mendapatkan hasil penomboran.
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi Oracle 11g, komputer Dell G3.
Prinsip paging:
1. Pertanyaan dengan bantuan ciri-ciri medan rownum ORACLE.
2. Tanya N keping data pertama
3. Dapatkan M hingga N keping data daripada hasil pertanyaan dalam langkah 2
4. Dalam web pembangunan Lulus M dan N sebagai parameter untuk mendapatkan hasil penomboran.
Contoh: Pertanyaan 20~30 rekod dalam jadual, pernyataan sql adalah seperti berikut.
select * from( select rownum as pageNo, A.* from tableName A where rownum <= 30) B where B.pageNo >=20;
Contoh:
--Bagaimana untuk mendapatkan 5 orang gaji tertinggi teratas dalam jadual pekerja?
SELECT * FROM( SELECT * FROM emp ORDER BY sal DESC) WHERE Rownum<6
--Bagaimana untuk mendapatkan maklumat pekerja dengan gaji kelima dalam jadual pekerja
SELECT * FROM( SELECT * FROM emp ORDER BY sal DESC) WHERE Rownum=5
--Hasilnya tiada kandungan yang boleh ditemui
--Sama seperti ROWNUM> =5 Menanyakan keputusan selepas tempat ke-5 juga gagal
--Ini melibatkan ROWNUM yang hanya boleh kurang daripada tetapi tidak lebih daripada atau sama dengan. Jadi--halangan penting untuk pertanyaan paging dalam pangkalan data Oracle ialah ini.
--Bagi prinsipnya, ROWNUM ialah lajur pseudo yang mesti disusun bermula dari 1 setiap kali. Jadi ROWNUM>=n. Sebagai contoh, adalah tidak benar jika 1 lebih besar daripada mana-mana n (bilangan item). Ia boleh didapati dengan ROWNUM=1. Kerana 1>=1 dipegang. N=2,1>=2 tidak benar. Oleh itu, hanya item pertama boleh disemak lebih besar daripada atau sama dengan. Ditambah kurang daripada atau sama dengan. Itu sahaja yang saya boleh semak. Oleh itu, kesukaran ini boleh dianggap sebagai meningkatkan kesukaran dan halangan pertanyaan paging.
--Kaedah 1 Pertanyaan paling mudah
--Item 5 hingga 10.
--Hanya terdapat satu lapisan sarang, satu subkueri,
SELECT * FROM (SELECT ROWNUM rn ,e.* FROM emp e WHERE ROWNUM<=10) WHERE rn>=5;
--Ini sebenarnya diubah daripada kaedah berikut.
--Iaitu, jadual baharu yang diperolehi oleh subkueri disoal semula.
--Langkah utama ialah ROWNUM rn.
--Dan jangan lupa e.*, jika tidak, tiada data yang lengkap.
SELECT * FROM (SELECT ROWNUM rn, e.* FROM emp e WHERE ROWNUM <= 10) table_1 WHERE table_1.rn>= 5;
--Di atas tidak diisih, berikut diisih
--Kerana mesti diisih dahulu sebelum membuat pertanyaan, semakin besar jadual, semakin perlahan kecekapannya.
--Kaedah 2
SELECT * FROM (SELECT ROWNUM rm ,e.* FROM emp e order by sal DESC ) WHERE rm>=5 AND rm<=10
--Berikut ialah kaedah menggunakan fungsi analitik; -- Tetapi apabila kami benar-benar menyemak keputusan, kami mendapati bahawa ia adalah berbeza sama sekali.
--disemak secara manual. Keputusan kaedah fungsi analisis adalah betul. tak faham.
SELECT * FROM (SELECT emp.*, ROW_NUMBER () OVER (ORDER BY sal DESC) rank FROM emp) WHERE rank >=6 AND rank<=10;
--Kaedah 4 (pertanyaan data besar-besaran, seperti pertanyaan Baidu, Tmall)
-- Penguraian langkahSELECT * FROM (SELECT e.*, ROWNUM AS rn from ( SELECT * FROM emp ORDER BY sal DESC) e )ee WHERE ee.rn>=5 AND ee.rn<=10
--Langkah pertama:
SELECT * FROM( SELECT e.* ,ROWNUM rn FROM ( SELECT * FROM emp ORDER BY sal DESC ) e WHERE ROWNUM<=10 )WHERE rn>=6;
--Langkah kedua:
--Langkah ketiga:SELECT * FROM emp ORDER BY sal DESC
--Langkah 4:
SELECT e .*,ROWNUM rn FROM (SELECT * FROM emp ORDER BY sal DESC) e
SELECT e .*,ROWNUM rn FROM (SELECT * FROM emp ORDER BY sal DESC) e WHERE ROWNUM<=10
SELECT * FROM( SELECT e .*,ROWNUM rn FROM (SELECT * FROM emp ORDER BY sal DESC) e WHERE ROWNUM<=10) WHERE rn>=5
--Syarat pertanyaan dinilai oleh keadaan yang belum wujud, jadi ia akan gagal secara semula jadi.
SELECT e .*,ROWNUM rn FROM (SELECT * FROM emp ORDER BY sal DESC) e WHERE rn<=10
Tutorial yang disyorkan: "
Tutorial Video Oracle"
Atas ialah kandungan terperinci Apakah prinsip pertanyaan paging oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!