三种SQL分页法
来源:互联网 发布:逛淘宝需要多少流量 编辑:程序博客网 时间:2024/06/15 12:26
表中主键必须为标识列,[ID] int IDENTITY (1,1)
1.分页方案一:(利用Not In和SELECT TOP分页)
语句形式:
SELECT TOP 10 *
FROM TestTable
WHERE (ID NOT IN
(SELECT TOP 20 id
FROM TestTable
ORDER BY id))
ORDER BY ID
SELECT TOP 页大小 *
FROM TestTable
WHERE (ID NOT IN
(SELECT TOP 页大小*页数 id
FROM 表
ORDER BY id))
ORDER BY ID
2.分页方案二:(利用ID大于多少和SELECT TOP分页,效率最高)
语句形式:
SELECT TOP 10 *
FROM TestTable
WHERE (ID >
(SELECT MAX(id)
FROM (SELECT TOP 20 id
FROM TestTable
ORDER BY id) AS T))
ORDER BY ID
SELECT TOP 页大小 *
FROM TestTable
WHERE (ID >
(SELECT MAX(id)
FROM (SELECT TOP 页大小*(页数-1) id
FROM 表
ORDER BY id) AS T))
ORDER BY ID
3.分页方案三:(利用SQL的游标存储过程分页)
create procedure SqlPager
@sqlstr nvarchar(4000), --查询字符串
@currentpage int, --第N页
@pagesize int --每页行数
as
set nocount on
declare @P1 int, --P1是游标的id
@rowcount int
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1, @rowcount=@rowcount output
select ceiling(1.0*@rowcount/@pagesize) as 总页数--,@rowcount as 总行数,@currentpage as 当前页
set @currentpage=(@currentpage-1)*@pagesize+1
exec sp_cursorfetch @P1,16,@currentpage,@pagesize
exec sp_cursorclose @P1
set nocount off
第 4 种
- select top pageSize * from foodInfo
- where foodid <= (select min(t.foodid) as m from (select top (currPage * pageSize + 1) * from foodInfo order by foodid desc) as t)
- order by foodid desc
- 三种SQL分页法
- 三种SQL分页法
- 三种SQL分页法
- 三种SQL分页法
- 三种SQL分页法
- 三种SQL分页法
- 三种SQL分页法
- 三种SQL分页法
- 三种SQL分页法
- 三种SQL分页法
- 三种SQL分页法
- 三种SQL分页法
- 三种SQL分页法
- 三种SQL分页法
- [转]三种SQL分页法
- 三种SQL分页法效率分析
- 三种SQL分页法效率分析
- 三种SQL分页法效率分析
- Cocos2d-x 3.0屏蔽下层触摸
- 炒股的智慧-三则小故事
- Eclipse Some projects cannot be imported because they already exist in the workspace 最便捷解决办法
- SQL随机函数newID()和RAND()详解
- vm10虚拟机安装Mac OS X10.10教程
- 三种SQL分页法
- sunday算法简介
- JS的深拷贝,不含函数
- Ubuntu10.04下安装Qt4和创建第一个Qt程序
- Objective-C——OC中枚举的使用
- FIRST集合FOLLOW集
- PHP设计模式——单例模式
- HDU1159---Common Subsequence
- 事务全攻略