JAVA—咖啡館

          ——歡迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術,交流工作經驗,分享JAVA帶來的快樂!本網站部分轉載文章,如果有版權問題請與我聯系。

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks

          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
           第二種分頁方法
           pageSize 每頁顯示多少條數據
           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分頁 
           需用到的參數:
           pageSize 每頁顯示多少條數據
           pageNumber 頁數 從客戶端傳來
           totalRecouds 表中的總記錄數 select count (*) from 表名
           totalPages 總頁數
           totalPages=totalRecouds%pageSize==0?totalRecouds/pageSize:totalRecouds/pageSize+1
           pages 起始位置
           pages= pageSize*(pageNumber-1)
           SQL語句:
           select * from 表名 limit pages, pageSize;
           mysql 分頁依賴于關鍵字 limit 它需兩個參數:起始位置和pageSize
           起始位置=頁大小*(頁數-1)
           起始位置=pageSize*(pageNumber -1)

          oracle分頁
           pageSize 每頁顯示多少條數據
           pageNumber 頁數 從客戶端傳來
           totalRecouds 表中的總記錄數 select count (*) from 表名
           totalPages 總頁數
           totalPages=totalRecouds%pageSize==0?totalRecouds/pageSize:totalRecouds/pageSize+1
           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);

           SQL語句
           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分頁
           pageSize 每頁顯示多少條數據
           pageNumber 頁數 從客戶端傳來
           pages=pageSize*(pageNumber-1)+1
           SQL語句
           select top pageSize * from 表名 where id>=(select max(id) from (select top pages id from 表名 order by id asc ) t )

          posted on 2010-09-28 09:37 rogerfan 閱讀(882) 評論(0)  編輯  收藏 所屬分類: 【數據庫】
          主站蜘蛛池模板: 城步| 肇州县| 汾阳市| 巫山县| 巴楚县| 太湖县| 离岛区| 磐石市| 丰台区| 互助| 沧州市| 出国| 迁西县| 垦利县| 宽甸| 互助| 舟曲县| 韶关市| 松阳县| 海兴县| 华坪县| 高邮市| 静宁县| 舞阳县| 澳门| 柳州市| 清河县| 宜宾县| 黄浦区| 石屏县| 泰来县| 封丘县| 呼图壁县| 泰顺县| 邹城市| 晋宁县| 墨玉县| 吴堡县| 晴隆县| 革吉县| 开平市|