K1为主键,第3页可以这样查
select top 10 * from tab1
where K1 not in
(
select top 10*(3-1) K1 from tab1
order by K1
)
order by K1要是主键是(K1,K2)呢?

解决方案 »

  1.   

    declare @sqlstr nvarchar(4000), --查询字符串
    @pagecount int,--第N页
    @pagesize int--每页行数
    select @pagecount=3--第3页
    ,@pagesize=10--第页10条
    ,@sqlstr='select * from sysobjects'
    set nocount on
    declare @P1 int,--P1是游标的id
    @rowcount int
    exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
    select @rowcount as 总行数,ceiling(1.0*@rowcount/@pagesize) as 页数,@pagecount as 当前页
    set @pagecount=(@pagecount-1)*@pagesize+1
    exec sp_cursorfetch @P1,16,@pagecount,@pagesize 
    exec sp_cursorclose @P1现在流行这个
      

  2.   

    sql 2005可以直接用rownumber函数select * from(
    select rid = row_number() over(order by k1, k2),*
    from tab1
    )a
    where rid between 31 and 40