SQL笔记---分页

随用随想,随用随记。

通过实际应用掌握SQL语句。

一. SQL分页

1. 第一种方法:利用ID大于多少进行筛选

SELECT TOP 20
        *
FROM    dbo.WMS_Stock
WHERE   ( Rk_SkuCode > ( SELECT MAX(Rk_SkuCode)
                         FROM   ( SELECT TOP 40
                                            *
                                  FROM      dbo.WMS_Stock
                                  ORDER BY  Rk_SkuCode
                                ) t
                       ) )
ORDER BY dbo.WMS_Stock.Rk_SkuCode

注释:ID大于前40个中最大的一个,即排序后的41位。

2. 第二种方法:利用Not In,排除掉某些有序的ID

SELECT TOP 20
        *
FROM    dbo.WMS_Stock
WHERE   ( Pk_StockId NOT IN ( SELECT TOP 40
                                        Pk_StockId
                              FROM      dbo.WMS_Stock
                              ORDER BY  Pk_StockId ) )
ORDER BY dbo.WMS_Stock.Pk_StockId

注释:这种方法是根据排序的先后顺序进行检索,即不在前40行紧挨着之后的20行。

3. 第三种方法:利用存储过程及游标

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

参考引用:

http://www.itlearner.com/article/3740

原文地址:https://www.cnblogs.com/cuiyansong/p/3819007.html