1.mySql/postgreSql:从0开始计数。
例子:
第0页, 第1页 ,第2页 ,。。。。。, 第n页
数据0—-9,10——19,20——29,。。。。。,n*10——(n+1)*10-1
1.1,通式: limit 开始,多少条
1.2,select 对象 from 表 limit 页数*页面大小,页面大小。举例:select * from 表 limit n*10,10
2.oracle/sqlserver是从1开始计数。
2.0,oracle实现分页(rownum)
例子:
第1页, 第2页 ,第3页 ,。。。。。, 第n页
数据1—-10,11——20,21——30,。。。。。,(n-1)*10+1——n*10
2.0.1,oracle里面是没有limit关键字的。
2.0.2,通式:select 加上条件选择
2.0.3,select * from student t where sno>=(n-1)*10+1 and sno<=n*10;此种写法必须sno是连续的不能中断。
2.0.3,select rownum,t * from student t where rownum>=(n-1)*10+1 and rownum<=n*10;此种写法有两种问题:
其一,如果根据sno排序,则rownum会混乱,解决方案:分开使用—>先只排序,再只查询rownum。
select * from
(select rownum r,t.* from
(select s.* from student s order by sno asc) t rownum<=n*10 )
) where r>=(n-1)*10+1
注解: rownum<=n*10,这是优化一次查询的个数。
其二,rownum有一个特性,不能查询rownum>7等类型
2.1.0 ,sqlserver实现分页(row_number())。
2.1.1,row_number() over (字段);
select * from
(select row_number() over (sno order by sno asc) as r,* from
(select s.* from student s order by sno asc) t r<=n*10 )
) where r>=(n-1)*10+1
3,分页的实现:
5个变量属性: 举例数字
数据总数(count),sql查询总数。 100 /103
页面大小(自定义), 10
总页数(自动计算):
总页数 = 100/10=页面总数据/页面大小;
总页数 = 103/10=页面总数据/页面大小+1;
.。。。。。。。
总结: 总页数 = 页面总数据%页面大小==0?页面总数据/页面大小:页面总数据/页面大小+1;
当前页页码(用户自定义),
当前页的对象集合 , 学生表 list<student>