【转载】Sqlserver数据库中无自增Id的情况下使用ROW_NUMBER()函数进行数据分页
程序员文章站
2022-07-11 11:31:35
在Sqlserver数据库中,如果查询表中含有自增长Id列,一般会采用select Top的方式来数据的分页操作。而实际上很多数据表设计的时候,不一定含有自增长Id列,那么数据库没有Id自增列的时候要对数据分页怎么办呢,此时则需要使用ROW_NUMBER()函数来对数据分页,ROW_NUMBER() ......
在sqlserver数据库中,如果查询表中含有自增长id列,一般会采用select top的方式来数据的分页操作。而实际上很多数据表设计的时候,不一定含有自增长id列,那么数据库没有id自增列的时候要对数据分页怎么办呢,此时则需要使用row_number()函数来对数据分页,row_number()一般与over(order by)一起连用。
使用row_number来数据分页的格式如下:
with temptb as ( select row_number() over(order by 排序的列 asc) as rownumber,* from 数据表_table ) select * from temptb where rownumber>开始行号 and rownumber<结束行号;
举个例子,我们要查询student表中的学生数据,按学生出生日期从前到后排序,取出出生日期排在第31位到第60位的数据,语句如下:
with temptb as ( select row_number() over(order by birthday asc) as rownumber,* from student ) select * from temptb where rownumber>30 and rownumber<=60