赞
踩
目录
oracle的分页不像Mysql有limit可以分页,oracle的分页需要用到oracle自带的rownum伪列进行分页。
在没有排序没分页的情况下:select user_id,user_name,rownum from sec_users;结果如下:
但如果加上了排序如根据user_id进行排序之后,rownum就会被打乱,因为rownum是根据还未排序的时候来编排的。
如:select user_id,user_name,rownum from sec_users order by user_id;结果如下:
所以在进行含有排序的分页时sql要再套一层以便获取排序后的正常的rownum,以便用正常的rownum进行分页。进行第二页数据的筛选的sql如下:
select * from (select u.*,rownum r from ( select user_id,user_name,rownum from sec_users order by user_id) u where rownum <=40) where r >20;
但如果不包含排序,分页的sql其实可以不用套两层,sql如下:
select * from ( select user_id,user_name,rownum r from sec_users where rownum <=40) u where r>20;
需要排序的时候要套两层,不需要排序的时候就不需要套两层而只需套一层即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。