mssql sqlserver sql脚本分页时,获取指定行数的同时,获取符合条件的总数的方法分享


摘要:
下文讲述数据分页时,同时获取符合条件的总数的方法分享,如下所示:
实验环境:sqlserver 2008 R2


实现思路:
使用over开窗函数,并结合row_number对数据进行排序,取出符合条件的行数并计算出符合条件的总行数

例:

  create table [maomao365.com]
    (keyId int identity, info nvarchar(20))
  go
 ---生成基础数据
  insert into   [maomao365.com](info)values
(N'sqlBlog'),(N'sql爱好者'),(N'A'),(N'B'),
(N'c'),(N'd'),(N'e'),(N'f'),(N'g'),(N'h'),
(N'i'),(N'j'),(N'h'),(N'o'),(N'p'),(N'q'),
(N'r'),(N's'),(N't'),(N'u'),(N'v'),(N'w'),
(N'x'),(N'y'),(N'z'),(N'AA'),(N'BB'),(N'CC')
go 
---每页3条数据,获取符合条件的数据中的第三页数据,并返回符合条件的数据行总数
SELECT
    keyId,info,rowCount
FROM
    (SELECT
        ROW_NUMBER() OVER(ORDER BY keyId asc) rowNumber,    
        COUNT(1) OVER() AS [rowCount],
        keyId,info
    FROM   [maomao365.com]  where 1=1 /*检索条件*/
    ) t
WHERE   ---
    t.rowNumber BETWEEN 7 AND 9   --限定返回第三页的数据
go
truncate table [maomao365.com]
drop       table [maomao365.com]