SQL 分页查询

假设有表如下 CREATE TABLE test (  id int primary key not null identity,  names varchar(20) ) 问id是递增的,为啥不能对id操作 假设啊,表可能有个删除操作,id不是连续的,再假设查询是有条件的,查出来的id也不是连续的 插入100条数据 问: 分10页,每页10 ,取第五页 计算currentPage=5 PageSize=10 那么 start=(currentPage-1)*PageSize+1 end=start+PageSize-1 也就是40-50条数据 不使用临时表归集数据的情况 oracle中 select*from test where ROWNUM<=50 and ROWNUM>=41 这样不行为什么 得这样 select*from (select ROWNUM rn ,names from test where ROWNUM<=50 ) where rn>=41 还有一种 select*from (select row_number() over(order by id) rn ,names from test) where rn>=41 and rn<=50 更高效点select*from (select row_number() over(order by id) rn ,names from testwhere ROWNUM<=50 ) where rn>=41 sql server 中 row_number() over (order by) 一样用法   使用临时表 临时表的话,也一样,最后的临时表中创建序号字段 最后数据归集到临时表时用row_number() over(order by id) 排序确定序号的值, 金蝶报表的做法 然后对最后的临时表进行分页查询 直接对序号字段操作就可以了  

 

上一篇:【IDEA】IDEA2021设置使同一段代码一个程序多线程运行


下一篇:IDEA2021版本中开启一个程序并行多个实例