首页 > 代码库 > SqlServer 常用分页方法总结
SqlServer 常用分页方法总结
SqlServer 常用分页方法总结
下面示例总结了,SqlServer数据库 常用分页方法,仅供学习参考
A、 使用 RowNumber 和 Between And 组合分页:
/********** 使用 RowNumber 和 Between And 组合分页 **********/ CREATE PROC proc_FuzzySearchAndPaging @pageIndex int, --页索引 @pageSize int, --页大小 @SearchKey Nvarchar(10), --查询关键字 @TotalCount int OutPut --总数据条数 AS BEGIN --查询 当前页 数据 SELECT * FROM( SELECT *,[NO]=ROW_NUMBER() OVER(ORDER BY s.s_id DESC) FROM StuInfo s WHERE s.s_name Like('%'+@SearchKey+'%') ) t WHERE t.[NO] BETWEEN @pageSize*(@pageIndex-1)+1 AND @pageIndex*@pageSize ORDER BY t.s_id DESC --总数据条数 SELECT @TotalCount = COUNT(*) FROM StuInfo s WHERE s.s_name Like('%'+@SearchKey+'%') END GO
B、使用 TOP 和 NOT IN 组合分页:
/********** 使用 TOP 和 NOT IN 组合分页 **********/ CREATE PROC proc_FuzzySearchAndPaging2 @PageIndex int, --当前页索引 @PageSize int, --每页显示的数据条数 @FuzzyKey Nvarchar(20), --模糊匹配的关键字 @Count int OUTPUT --总数据条数(用来判断要分多少页) AS BEGIN SELECT TOP(@PageSize) * FROM StuInfo s WHERE s.s_name LIKE('%'+@FuzzyKey+'%') AND s.s_id NOT IN( SELECT TOP((@PageIndex-1)*@PageSize) s.s_id FROM StuInfo s WHERE s.s_name LIKE('%'+@FuzzyKey+'%') ORDER BY s.s_id ASC ) ORDER BY s.s_id ASC --总数据条数 SELECT @Count=COUNT(*) FROM StuInfo s WHERE s.s_name LIKE('%'+@FuzzyKey+'%') END GO
如有,更好方法 方法欢迎拿出来分享!
扩充:分页时,可以充分借助 临时表 和 WITH AS 语句提供查询速度
WITH AS语句示例:
DECLARE @SearchKey Nvarchar(10) --查询关键字 WITH t AS( SELECT * FROM StuInfo s WHERE s.s_name Like('%'+@SearchKey+'%') )
临时表 语句示例:
DECLARE @SearchKey Nvarchar(10) --查询关键字 SELECT * INTO #temp2 FROM ( SELECT * FROM StuInfo s WHERE s.s_name Like('%'+@SearchKey+'%') ) u
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。