不管在任何一个开发中,分页几乎都是比不可少的。这里我们就说说分页的sql语句实现,在后面的几篇博客中在写一些关于分页插件的建立和应用。
一般上线的系统数据量都不小,在分页的时候对于大数据量的我们一般都会用多少数据从数据库中取出多少数据。不会说一次性把所有的数据都取出来,那样资源占用太大了性能也不行。
1.oracle的分页语句
select * from (select t.*, rownum r from table t where rownum < M order by t.XXX desc) t2 where t2.r >= N; rownum: 它是oracle给查询出来的结果加的一个伪列,该伪列是结果每返回一行给rownum赋个值,值为从1开始依次增加。取别名为r。 (具体详解和取值) order by:对查询的结果进行排序。 M和N:N表示的是开始记录数,M-N表示该页的显示记录数 外查询的where必须使用rownum的别名
order by: 必须放在子查询里面。
rownum: 不能有前缀
2.mysql的分页语句
select * from table limit M,N; M和N:从M条记录开始显示N条记录。
例:
(1)从记录20开始检索10条记录。(20-30)
select * from dept limit 20,10; select * from (select t.*, rownum r from dept t where rownum < 30 order by deptId desc ) t2 where t2.r >= 20
(2)先按一字段排序,然后去的20-30行 以外的数据
select * from (select t.*, rownum r from (select * from dept order by deptId) t ) where r >30 or r < 20;