Oracle分頁查詢過程的簡單實現
在編寫分頁查詢的過程中,我們需要細化每個步驟,并理解分頁查詢的原理和步驟。 選擇合適的表 首先,我們需要選擇一張表進行分頁查詢。最好選擇一張獨立的表,但如果只涉及到查詢操作,也可以使用其他表的子表
在編寫分頁查詢的過程中,我們需要細化每個步驟,并理解分頁查詢的原理和步驟。
選擇合適的表
首先,我們需要選擇一張表進行分頁查詢。最好選擇一張獨立的表,但如果只涉及到查詢操作,也可以使用其他表的子表或者父表。如果當前用戶下沒有任何表,在當前用戶有權限的前提下,我們可以創建一張表并導入少量數據作為示例。
找出所有信息
第一步是找出1至最大范圍的所有信息。在這一步中,我們需要注意以下幾點:
- 對于完全查詢部分(即SELECT * FROM table),需要給其取一個別名。
- 對于rownum(行號)也需要取一個別名(為什么后面會解釋)。
查詢小于等于的數據
經常會有這樣一個問題:為什么要先查詢小于等于某個界限的數據?不能先查詢大于某個界限的數據嗎?事實上,如果我們先查詢大于某個界限的數據,是查不到任何數據的。
這是因為Oracle對于rownum的分配是這樣的:先獲取內層查詢結果集,再根據篩選條件對其分配rownum。rownum從1開始,依次分配給每一條記錄。如圖所示,在獲取所有數據后,給第一條數據分配rownum為1,由于1 < 2(我們查詢的范圍是1至最大范圍),所以這條記錄被剔除。接著,再給下一條記錄分配rownum為1,再次剔除...這樣所有的記錄都不會保留下來。
獲取指定范圍的記錄
到了這一步,我們已經獲取到了前5條記錄?,F在我們需要獲取3至5的記錄。只需要在外層添加一層SELECT語句即可。
需要注意的是,在外層查詢的篩選條件中,我們需要使用內層rownum的別名而不是直接使用rownum。這是為什么在第二步強調要取別名的原因。如果我們不使用內層rownum的別名,外層查詢會重新分配rownum,而外層條件又是 > 3,所以就會像第四步一樣,無法獲取任何數據。
新Oracle分頁查詢實現方法詳解