1个回答
展开全部
可以加个游标 使用更方便
@PageCount bigint output,--总页数
@Pages bigint output --当前页
as
if @Pages<=0 --判断页数
set @Pages=1
declare @指针定位 bigint
set @指针定位=9*(@Pages-1)--这个是每页10条
declare @hid bigint,--获取定位Id 主要是用自增值判断的
@余数 bigint--存余数 这个余数是 记录数/10 余下的数
select @PageCount=count(*) from [表] where [Id] = @Id
set @余数=@PageCount%10 --这里的@PageCount 是记录总数
if @余数>0
set @PageCount=@PageCount/10+1 --这里的@PageCount是总页数
else
set @PageCount=@PageCount/5 --这里的@PageCount是总页数
if @Pages>@PageCount --@Pages是当前页
set @Pages=@PageCount
declare mycur scroll cursor for
select [Id] from [表] where [Id] = @Id
open mycur
fetch absolute @指针定位 from mycur into @hid --@hid获取定位Id
if @hid is null
set @hid=0
SELECT TOP 10 * --这里的10 是指 页数大小
FROM 表
WHERE (Id NOT IN
(SELECT TOP (@hid) Id
FROM 表
ORDER BY Id))
ORDER BY Id
--上面的是我根据下面的 自己改的 我也不确定速度快否 也请高手看看 不过挺好用--
SELECT TOP 页大小 *
FROM TestTable
WHERE (ID NOT IN
(SELECT TOP (页大小*(页数-1)) id
FROM 表
ORDER BY id))
ORDER BY ID
@PageCount bigint output,--总页数
@Pages bigint output --当前页
as
if @Pages<=0 --判断页数
set @Pages=1
declare @指针定位 bigint
set @指针定位=9*(@Pages-1)--这个是每页10条
declare @hid bigint,--获取定位Id 主要是用自增值判断的
@余数 bigint--存余数 这个余数是 记录数/10 余下的数
select @PageCount=count(*) from [表] where [Id] = @Id
set @余数=@PageCount%10 --这里的@PageCount 是记录总数
if @余数>0
set @PageCount=@PageCount/10+1 --这里的@PageCount是总页数
else
set @PageCount=@PageCount/5 --这里的@PageCount是总页数
if @Pages>@PageCount --@Pages是当前页
set @Pages=@PageCount
declare mycur scroll cursor for
select [Id] from [表] where [Id] = @Id
open mycur
fetch absolute @指针定位 from mycur into @hid --@hid获取定位Id
if @hid is null
set @hid=0
SELECT TOP 10 * --这里的10 是指 页数大小
FROM 表
WHERE (Id NOT IN
(SELECT TOP (@hid) Id
FROM 表
ORDER BY Id))
ORDER BY Id
--上面的是我根据下面的 自己改的 我也不确定速度快否 也请高手看看 不过挺好用--
SELECT TOP 页大小 *
FROM TestTable
WHERE (ID NOT IN
(SELECT TOP (页大小*(页数-1)) id
FROM 表
ORDER BY id))
ORDER BY ID
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询