几个分页存储过程
来源:互联网 发布:美丽档案淘宝官网 编辑:程序博客网 时间:2024/04/29 20:28
方法一:
使用了set rowcount的方法
CREATE proc CrmGetTest1
@CurrentPage int, --当前页,从0开始
@PageSize int --页的长度
as
Declare @Count int --执行多少次
Declare @ID int --ID的编号
set @Count = @PageSize * @CurrentPage + 1
set rowcount @Count
select @ID = ID
from test
order by ID asc
set rowcount @PageSize
select *
from test
where ID >= @ID
order by ID asc
set rowcount 0
GO
缺点:无法使用重复数据的排序方法,而且对于不是递增的列好象也不适用。
方法二:
使用了not in 的方法
CREATE proc CrmGetTest2
@CurrentPage int, --当前页,从0开始
@PageSize int --页长度
as
declare @sql nvarchar( 1000 )
set @sql = ' select top ' + Convert( nvarchar( 50 ) , @PageSize ) + ' id from test where id not in ( select top ' + Convert( nvarchar( 50 ) , ( @PageSize * @CurrentPage ) ) + ' id from test order by id asc ) order by id asc '
print ( @sql )
exec ( @sql )
GO
缺点:可以使用任意的排序方法,但是效率不高。
方法三:
使用了>max(id)的方法
CREATE proc CrmGetTest3
@CurrentPage int, --当前页,从0开始
@PageSize int --页长度
as
declare @sql nvarchar( 1000 )
--第一页
if @CurrentPage = 0
begin
set @sql = ' select top ' + Convert( nvarchar( 50 ) , @PageSize ) + ' id from test order by id '
end
else
begin
set @sql = ' select top ' + Convert( nvarchar( 50 ) , @PageSize ) + ' id from test where id > ( select max( id ) from ( select top '+ Convert( nvarchar( 50 ) , ( @PageSize * @CurrentPage ) ) + ' id from test order by id ) as T ) order by id '
end
print ( @sql )
exec( @sql )
GO
缺点:无法使用重复数据的排序方法,而且对于不是递增的列好象也不适用。
方法四:
使用了临时表的方法
CREATE proc CrmGetTest4
@CurrentPage int, --当前页,从0开始
@PageSize int --页长度
as
declare @sql nvarchar( 1000 )
declare @RecordCount int --总的记录数
select @RecordCount = count( * )
from test
set @sql = ' select top ' + Convert( nvarchar( 50 ) , @PageSize ) + ' id from ( select top ' + Convert( nvarchar( 50 ) , ( @RecordCount - @PageSize * @CurrentPage ) ) + ' id from test order by id desc ) as TempTable order by id asc '
print ( @sql )
exec( @sql )
GO
缺点:可以进行多关键字的排序,只要把临时表里面的字段的排序方式全部反过来即可,但是效率不是很高。
另外还可以采用游标和新增一个字段rowid,让其递增,使用rowid between and 的方法,但是我觉得效率都一般。我觉得SQL_Server 可以增加一个伪列,每次筛选以后都是从1到最后的编号,这样就不需要进行分页的讨论了。^_^
- 几个分页存储过程
- 几个分页存储过程
- 几个分页存储过程
- 几个分页存储过程
- 几个分页存储过程
- 几个分页存储过程
- 几个分页存储过程
- 总结的几个 sql 分页存储过程
- 网上收藏的几个邹老大的分页存储过程
- 网上收藏的几个邹老大的分页存储过程
- 项目中的几个常用的分页存储过程
- 自已写的几个分页的存储过程
- orcale分页 存储过程分页
- 存储过程几个实例
- 存储过程几个例子
- 一个分页存储过程
- 一个分页存储过程
- 存储过程分页代码
- upload file 2
- java线程实例详析
- 别人想拒绝都难 我的QQ想加谁就加谁!
- Do all in one exe file Under Win32
- 为迅驰4量身定做!NVIDIA新一代显卡曝光
- 几个分页存储过程
- 一个多线程的经典例子(转载)
- 单点登录资料收集(百度篇)
- 通用单据打印控件问题集
- 学习GWT
- my Brower
- Duwamish 7.0 的研究
- Spring事务说明
- XmlDocument类的使用