天天看點

Oracle、DB2、SQLSERVER、Mysql、Access分頁SQL語句梳理

最近把平時在項目中常用到的資料庫分頁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/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連結。如文章對您有用,煩請點個推薦再走,感謝! 本部落格新開通打賞,滑鼠移到右側打賞浮動處,即可賞部落客點零花錢,感謝您的支援!