本文共 3331 字,大约阅读时间需要 11 分钟。
第一种方法:效率最高
- SELECT TOP 页大小 *
- FROM
- (
- SELECT ROW_NUMBER() OVER (ORDER BY id) AS RowNumber,* FROM table1
- ) as A
- WHERE RowNumber > 页大小*(当前页-1)
-
-
-
-
-
将上面的方法写成存储过程 (表名Location)
- if(exists(select* from sys.procedures where name='p_location_paging'))
- drop proc p_location_paging
- go
- create proc p_location_paging(@pageSize int, @currentPage int)
- as
- select top (@pageSize) * from (
- select ROW_NUMBER() over(order by locid) as rowid ,* from location
- )as A
- where rowid> (@pageSize)*((@currentPage)-1)
简单的说row_number()从1开始,为每一条分组记录返回一个数字

第二种方法:效率次之
- SELECT TOP 页大小 *
- FROM table1
- WHERE id >
- (
- SELECT ISNULL(MAX(id),0)
- FROM
- (
- SELECT TOP 页大小*(当前页-1) id FROM table1 ORDER BY id
- ) as A
- )
- ORDER BY id
将上面的方法写成存储过程:表名Location - if(exists(select * from sys.procedures where name='p_location_paging'))
- drop proc p_location_paging
- go
- create proc p_location_paging(@pageSize int ,@currentPage int)
- as
- select top (@pageSize) * from location
- where locId>(select ISNULL(MAX(locId),0)
- from (select top ((@pageSize)*(@currentPage-1))locid from location order by locId) as a
- )
- order by locId
第三种方法:效果最差
- SELECT TOP 页大小 *
- FROM table1
- WHERE id NOT IN
- (
-
- SELECT TOP 页大小*(当前页-1) id FROM table1 ORDER BY id
- )
- ORDER BY id
在知道总的数据量,及每页显示多少条数据后。计算总的页数
<1> 即便数据总的条数为0。也显示一页; 即:总页数=1
- int dataCount;
- int pageSize;
- int pageCount;
- pageCount = dataCount % pageSize == 0 ? ((dataCount - pageSize >= 0 ? (dataCount / pageSize) : 1)) : dataCount / pageSize + 1;
-
-
- if(dataCount%pageSize==0)
- {
- if(dataCount-pageSize>=0)
- {
- pageCount=dataCount/pageSize;
- }
- else
- {
- pageCount=1;
- }
-
- }
- else
- {
- dataCount=(dataCount/pageSize)+1;
- }
<2>如果数据总条数为0。连一页都不需要显示;即:总页数=0
- int dataCount;
- int pageSize;
- int pageCount;
- pageCount = dataCount % pageSize == 0 ? ((dataCount - pageSize >= 0 ? (dataCount / pageSize) : (dataCount==0?0:1))) : dataCount / pageSize + 1;
-
-
- if(dataCount%pageSize==0)
- {
- if(dataCount-pageSize>=0)
- {
- pageCount=dataCount/pageSize;
- }
- if(dataCount=0)
- {
- pageCount=0;
- }
- else
- {
- pageCount=1;
- }
-
- }
- else
- {
- dataCount=(dataCount/pageSize)+1;
- }
参考文档:
https://blog.csdn.net/fanbin168/article/details/41749509
http://www.cnblogs.com/songjianpin/articles/3489050.html