最近把平時在項目中常用到的資料庫分頁sql總結了下。大家可以貼出分頁更高效的sql語句。
sqlserver分頁
第一種分頁方法
需用到的參數:
pageSize 每頁顯示多少條資料
pageNumber 頁數 從用戶端傳來
totalRecouds 表中的總記錄數 select count (*) from 表名
totalPages 總頁數
totalPages=totalRecouds%pageSize==0?totalRecouds/pageSize:totalRecouds/pageSize+1
pages 計算前pages 條資料
pages= pageSize*(pageNumber-1)
SQL語句:
select top pageSize * from 表名 where id not in (select top pages id from 表名
order by id) order by id
第二種分頁方法
pageNumber 頁數
從用戶端傳來
pages=pageSize*(pageNumber-1)+1
select top pageSize * from 表名
where id>=(select max(id) from (select top pages id from 表名 order by id asc )
t )
mysql分頁
pages 起始位置
select *
from 表名 limit pages, pageSize;
mysql 分頁依賴于關鍵字 limit 它需兩個參數:起始位置和pageSize
起始位置=頁大小*(頁數-1)
起始位置=pageSize*(pageNumber -1)
oracle分頁
totalRecouds
表中的總記錄數 select count (*) from 表名
startPage 起始位置
startPage=
pageSize*(pageNumber-1)+1
endPage=startPage+pageSize
SQL語句
select
a.* from
(
select rownum num ,t.* from 表名 t where 某列=某值 order by id
asc
)a
where a.num>=startPage and a.num<endPage
db2分頁
int startPage=1 //起始頁
int endPage; //終止頁
int
pageSize=5; //頁大小
int pageNumber=1 //請求頁
startPage=(pageNumber-1)*pageSize+1
endPage=(startPage+pageSize);
select * from (select 字段1,字段2,字段3,字段4,字段5,rownumber()
over(order by 排序字段 asc ) as rowid from 表名 )as a where a.rowid >= startPage
AND a.rowid <endPage
access分頁
select top pageSize *
from 表名 where id>=(select max(id) from (select top pages id from 表名 order by
id asc ) t )
作者:
從此啟程/範存威出處:
http://www.cnblogs.com/fancunwei/本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連結。如文章對您有用,煩請點個推薦再走,感謝! 本部落格新開通打賞,滑鼠移到右側打賞浮動處,即可賞部落客點零花錢,感謝您的支援!