在做專案中,乙個頁面顯示不下資料,難免會用到分頁顯示,資料庫中也一樣,需要對查詢的結果進行分頁顯示,那麼不同的資料庫應該怎麼實現分頁呢?我們簡單**一下如何實現分頁。
mysql中的分頁
mysql中支援limit關鍵字,因此可使用limit進行分頁, 查詢第1條到第10條記錄,如下圖:
select * from categorysecond limit 10
注:ms sql與mysql類似,這裡不做詳細介紹。
oracle分頁
oracle中不支援limit語法,但是oracle中可為每個表中的記錄預設生成乙個rownum(行號)、rowid(行id),我們稱之為偽列,同理可借助rownum來進行分頁。
rowid和rownum示例:
分頁查詢思路:
可用3層查詢,由內到外,內層查詢為需要查詢的語句,中層查詢需要查詢內層的所有資料加上rownum,外層需查出中層內的所有資料,並且條件中指定中層查詢的rownum的範圍,即可完成分頁查詢。
查詢姓名為「李五零」並按照income_sum 降序的第1條到第10條的資料:
select * from (
select rownum rn ,b.* from (
select * from income_allot_det where pro_manager_name = '李五零' order by income_sum desc
select * from income_allot_det where rownum >1 and rownum <10 order by income_sum desc
結論:
首先我們解釋一下rownum的特點
1.rownum在直接使用大於或小於時,是查不出任何資料的;
2. rownum是oracle系統順序分配的行的編號,它會先根據where中的條件查詢,對查詢後的結果重新分配行號,因此rownum總是從1開始,這樣就會造成查詢結果不準確。
為了避免這種情況,只能將rownum作為需要查詢結果的某一列(中層查詢),進行巢狀查詢,保證需要分頁表中的rownum不會隨意改變。
資料庫查詢分頁。
csdn上推薦的,轉過來的。呵呵!表中主鍵必須為標識列,id int identity 1,1 1.分頁方案一 利用not in和select top分頁 語句形式 select top 頁記錄數量 from 表名 where id not in select top 每頁行數 頁數 1 id fr...
資料庫分頁查詢
資料庫分頁查詢 在這裡主要講解一下mysql sqlserver2000 及sqlserver2005 和orcale三種資料庫實現分頁查詢的方法。可能會有人說這些網上都有,但我的主要目的是把這些知識通過我實際的應用總結歸納一下,以方便大家查詢使用。下面就分別給大家介紹 講解一下三種資料庫實現分頁查...
資料庫分頁查詢
1 mysql select from demo where 1 1 limit 2,3limit是用來分頁的,第乙個引數是行號,第二個引數是說有多少行 2 oracle 第一種select id,field name,from table name where id in select id fr...