Rumah >pangkalan data >Oracle >Apakah prinsip pertanyaan paging oracle

Apakah prinsip pertanyaan paging oracle

WBOY
WBOYasal
2022-01-25 16:59:315295semak imbas

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.

Apakah prinsip pertanyaan paging oracle

Persekitaran pengendalian tutorial ini: sistem Windows 10, versi Oracle 11g, komputer Dell G3.

Apakah prinsip pertanyaan paging oracle?

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;
--Bolehkah sesiapa menerangkannya?

--Inilah yang tidak bermakna

--Kaedah 4 (pertanyaan data besar-besaran, seperti pertanyaan Baidu, Tmall)

-- Penguraian langkah
SELECT * 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

--Salah teka.
SELECT e .*,ROWNUM rn FROM
(SELECT * FROM emp ORDER BY sal DESC) e
WHERE ROWNUM<=10

--Untuk membuat alias, anda mesti menanyakan jadual data
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
--Kaedah 5, penggunaan melahu dan membosankan

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!

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