Oracle分页查询和合并查询
下面主要为大家讲解一下Oracle里面自带的一个函数rownum,这个函数的作用主要用于筛选指定条件的数据,即分页查询。
一、分页查询
(1)、rownum
先找到小于10的然后找到大于4的
select * from
(select t1.*,rownum rn from
(select * from emp) t1
where rownum<=10) where rn>=4;
注意:顺序不可以反,即<=10不能和>=4对换位置,因为rownum在没有起别名时,只能存在<符号,不能存在>符号。
oracle使用三层过滤:
第一层:
select * from emp;
第二层:
select t1.*,rownum rn from
(select * from emp) t1
where rownum<=10;
第三层:
select * from
(select t1.*,rownum rn from
(select * from emp) t1
where rownum<=10) where rn>=4;
10表示取到第几条,4表示从第几条取
(2)row_number( )over( )
eg:查询出emp 表中 sal 按升序排列后10 - 20 的员工信息
select * from(select salary,row_number()over(order by salary asc)rn from employees)t
where t.rn>=10 and t.rn<=20;
row_number()over()的好处在于它可以当作子查询嵌套在第二层(比rownum()少写一层),当需要对排序后的结果集进行分页筛选时,可以再将排序的语句放在over()里面,然后起个别名,接着再给子查询一个别名,然后就可以通过子查询的别名去找到排序后的别名进行筛选了。
二、合并查询
有时在实际应用中,为了合并多个select语句的结果,可以使用集合(set)操作符号union,union all,intersect,minus 多用于数据量比较大的数据局库,运行速度快。
(1)union
(union 操作符返回两个查询的结果集的并集)
该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中重复行。
select ename, sal, job from emp where sal>2500
union
select ename, sal, job from emp where job ='MANAGER';
(2)union all
(union all操作符返回两个查询的结果集的并集。对于两个结果集的重复部分,不去重。)
该操作符与union相似,但是它不会取消重复行,而且不会排序。
select ename, sal, job from emp where sal>2500
union all
select ename, sal, job from emp where job ='MANAGER';
(3)intersect
(intersect 操作符返回两个结果集的交集)
使用该操作符用于取得两个结果集的交集。
select ename, sal, job from emp where sal>2500
intersect
select ename, sal, job from emp where job ='MANAGER';
(4)minus
(minus 操作符:返回两个结果集的差集,就是减法的意思)
使用改操作符用于取得两个结果集的差集,它只会显示存在第一个集合中,而不存在第二个集合中的数据。
select ename, sal, job from emp where sal>2500
minus
select ename, sal, job from emp where job ='MANAGER';
注:使用 set 操作符注意事项
1、在select 列表中的列名和表达式在数量和数据类型上要相对应
2、括号可以改变执行的顺序
3、order by 子句:
(1)只能在语句的最后出现。(2)可以使用第一个查询中的列名, 别名或相对位置
4、除 union all之外,系统会自动将重复的记录删除
5、系统将第一个查询的列名显示在输出中
6、除 union all之外,系统自动按照第一个查询中的第一个列的升序排列
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南