Oracle的分页查询
为什么80%的码农都做不了架构师?>>>
因为Oracle不像MySQL一样有limit函数来实现分页查找,oracle要实现分页查询可使用关键字rownum来处理。使用rownum有以下几点需要注意:
1、ROWNUM存在使用规则,在单个子查询中,对于WHERE中的ROWNUM限制只能使用<或者<=;
2、ROWNUM用于从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀;
下面通过rownum的三种方式来实现oracle的多表分页查询(单表也一样):
1、通过子查询的方式
select *
from (select row_.*, rownum rownum_
from (select u.login_name,u.name,d.name as name1,s.name as name2,s.url
from site_admin ad left join user u on ad.user_id = u.id
left join site s on ad.site_id = s.id
left join department d on u.dept_id = d.id) row_
where rownum <= 10)
where rownum_ > 0;
这里有一个点需要注意:当多表关联中有涉及到两张表都有同一个名称的字段是,如:
那么,需要将其他的同名称的字段取一个别名用来区分,否则查询会报错:ambiguous fields...
2、minus关键字-多次查询
select u.login_name,u.name,u.sex,u.mobile,u.phone,u.email,d.name,s.name,s.url
from site_admin ad left join user u on ad.user_id = u.id
left join site s on ad.site_id = s.id
left join department d on u.dept_id = d.id where rownum <=10
minus
select u.login_name,u.name,d.name,s.name,s.url
from site_admin ad left join user u on ad.user_id = u.id
left join site s on ad.site_id = s.id
left join department d on u.dept_id = d.id where rownum <=5;
上面的sql中,查的是6~10的记录,就把前10条记录减去前5条记录,但是这个看起来太啰嗦也很冗长,不太建议。
3、between...and...以及排序
select *
from (select row_.*, rownum rownum_
from (select u.login_name,u.name,d.name as name1,s.name as name2,s.url
from site_admin ad left join user u on ad.user_id = u.id
left join site s on ad.site_id = s.id
left join department d on u.dept_id = d.id
order by u.name asc) row_) b
where b.rownum_ between 0 and 10;
通过子查询并且用between...and...方法也可以完成分页查询的操作,并且,有子查询,我们可以对查询结果进行排序,因为生成的rownum在order by操作的前面,为了保证排序结果一致,需要先执行order by操作,这样查询之后的排序结果会一致,第三种方法可以说是第一种方法的优化。
欢迎加入java交流群:280097991。
转载于:https://my.oschina.net/varus/blog/1594737
Oracle的分页查询相关推荐
- Oracle中分页查询语句
Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看. Oracle分页查询语句基本上可以按照本文给出的格式来进行套用. ...
- Oracle之分页查询
2019独角兽企业重金招聘Python工程师标准>>> Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用. 分页查询格式 SELECT * FROM ( SELECT ...
- oracle查询实现分页,Oracle实现分页查询的SQL语法汇总
本文实例汇总了Oracle实现分页查询的sql语法,整理给大家供大家参考之用,详情如下: 1.无ORDER BY排序的写法.(效率最高) 经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据 ...
- oracle spring 分页查询,SpringJDBC 调用oracle 通用存储过程分页
我博客前面有写道SpringJDBC调用通用的Oracle存储过程,今天来讲一下通用的Java存储过程带分页的功能,其中里面还有动态查询的SQL拼接,好的,先上代码 1.Java代码 @Autowir ...
- oracle高效分页查询总结
本文参考链接:http://blog.sina.com.cn/s/blog_8604ca230100vro9.html 探索查询语句: --分页参数:size = 20 page = 2 --没有or ...
- sql server与oracle的分页,详解SQLServer和Oracle的分页查询
不管是DRP中的分页查询代码的实现还是面试题中看到的关于分页查询的考察,都给我一个提示:分页查询是重要的.当数据量大的时候是必须考虑的.之前一直没有花时间停下来好好总结这里.现在又将Oracle视频中 ...
- oracle数据库分页查询慢,Oracle数据库中分页查询中排序及效率问题
原始未分页查询Sql代码如下: select ROWNUM rn, t.id ID, o.name YYB,u.name XM, t.MC from tZDYSX t,tuser u,lborgani ...
- oracle分页怎么查询,Oracle的分页查询
因为Oracle不像MySQL一样有limit函数来实现分页查找,oracle要实现分页查询可使用关键字rownum来处理.使用rownum有以下几点需要注意: 1.ROWNUM存在使用规则,在单个子 ...
- 使用oracle数据库分页查询语句,各种数据库的分页查询语句
各种数据库的分页查询语句 1.oracle数据库分页select * from (select a.*,rownum rc from 表名 where rownum=endrow) a where a ...
最新文章
- 【已解决】tomcat报严重: Socket accept failed
- python imshow彩色_python中plt.imshow与cv2.imshow显示颜色问题
- BZOJ 3994 [SDOI2015]约数个数和 (莫比乌斯反演)
- 网络分析(带权并查集)
- Homebrew OS X 不可或缺的套件管理器
- 编程是一门实践性的科学
- VScode中编写运行C/html文件
- android 退出应用,如何停止服务,Android 完全退出当前应用程序的四种方法
- Python工作笔记005---旧式字符串格式化_%5.3f的含义
- 【图神经网络】ChebyNet-切比雪夫多项式近似图卷积核
- 尚学堂第十一章多线程习题答案
- sql查询每科成绩最高的人和分数
- Messenger:使用消息的跨进程通信 (Message.replyTo()的使用)
- 第二部分 项目管理标准
- 日期转换 NSDate 格式 格林尼治时间 时差
- python RF使用笔记
- 机器人运动学---雅克比矩阵伪逆
- 会玩,有人用 Python 模拟导弹防御!
- java第九章第一题_Java第九章第五题
- 打死都不要进外包,看看我在阿里外包的2年…