利用ROW_NUMBER()函数左子查询达到数据分页:
实验表:
--分页主角
ROW_NUMBER() OVER()
--ROW_NUMBER()可以计算出查询结果每一行的行号,而OVER的参数是指定排序规则,一定要加上OVER函数,不然会报错。
--如:ROW_NUMBER() OVER(ORDER BY Id)
分页思路是先给整个查询结果加上行号,然后根据指定行号进行数据分页。所以用到了子查询:
SELECT ROW_NUMBER() OVER(ORDER BY Id) AS row,* FROM T_Members
--查询全表数据并为每行加上行号——row列
上面操作后再做一次条件查询,获取目标行,分页的雏形就出来了:
SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY Id) AS row,* FROM T_Members) t WHERE t.row>=1 AND t.row<=5
--按指定行号(大于等于1小于等于5)查询结果
最后就是修改成可编辑的:
declare @pagesize int --单页大小
declare @pagenum int --页码
set @pagesize = 5
set @pagenum = 1
SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY Id) AS row,* FROM T_Members) t WHERE t.row>=(@pagenum-1)*@pagesize+1 AND t.row<=@pagesize*@pagenum