手动分页查询的时候接触到了 row_number() 函数。
row_number() 函数多用于对数据进行排序,返回的数据项多增加一个序号。
如:按照年龄对用户进行排序,并返回序号:
select row_number() over( order By age) as rownumber, u.name, u.age, u.email from user u
上文可知 row_number() 可以排序并返回序号,想实现分页查询可在外面嵌套一个 select,根据序号对数据进行限制。
如;返回五名年龄最小的用户:
select * from (select row_number() over( order By age) as rownumber, u.name, u.age, u.email from user u) uu where uu.rownumber <= 5
手动分页查询一般需要传入两个参数,page 代表第几页, pageSize 代表一页数量,
当 page = 2, pageSize = 3 时,sql大致如下:
select uu.* from (select row_number() over( order By age) as rownumber, u.name, u.age, u.email from user u) uu where uu.rownumber >(2-1)*3 and uu.rownumber <=2*3