Oracle复杂查询(三)
来源:互联网 发布:tp框架数据库修改语句 编辑:程序博客网 时间:2024/05/18 09:22
在from中使用子查询:
如上例Oracle复杂查询(二)最后一行,在from语句中使用子查询时,该子查询会被作为一个视图来对待,因此叫做内嵌视图,而且必须要给子查询制定别名!!
【注意:在给列取别名时可以加as,而给表加别名不可加as】
分页子查询:Oracle一共有三种 1、rownum 2、分析函数 3、rowid效率最高
一、rownum分页
第一步:先做子查询:select * from emp;
第二步:显示rownum【oracle分配的】
select a1.*,rownum rn from (select * from emp) a1;
第三步:显示6到10 号的数据
select a1.*,rownum rn from (select * from emp) a1 where rownum<=10; 【此处rownum不可用别名】
select * from ( select a1.*,rownum rn from (select * from emp) a1 where rownum<=10) where rn >=6;
【注意:不能直接写成select a1.*,rownum rn from (select * from emp) a1 where rownum<=10 and rownum>=6或者是用between and,都不可以,oracle 的分页一次只能使用一次,类似于二分法】
查询的变化
a、指定查询咧,只需要修改最里层的子查询
b、如何排序,只需要修改最里层的子查询
用查询结果创建新表;
create table mytable (id,name,sal,job,deptno) as select empno,ename,sal,job,deptno,from emp;
合并查询:【速度远远高于and,or等等】
有时候在实际应用中,为例合并多个select语句的结果,可以使用集合操作符union,union all ,intersect,minus;
(1)union
该操作用于取得两个结果集的并集,会自动去除结果集中的重复行,
select ename ,sal ,job from emp where sal >2500 union select ename ,sal ,job from emp where job ='manager'
(2)union all 与union相似,但不会取消重复行,而且不会排序。
select ename ,sal ,job from emp where sal >2500union all select ename ,sal ,job from emp where job ='manager'
(3)intersect
使用该操作符用于取得两个结果集的交集
select ename ,sal ,job from emp where sal >2500 intersect select ename ,sal ,job from emp where job ='manager'
(4)minus
两个结果集的差集,会显示存在第一个集合中,而不存在第二个集合中的数据
- Oracle复杂查询(三)
- SQL复杂查询(三)
- oracle复杂查询(二)
- MySQL基础笔记(三) 复杂查询
- MySQL基础笔记(三) 复杂查询
- oracle复杂查询(学生成绩相关)
- Oracle 学习笔记 复杂 查询(重点)
- Oracle复杂查询
- ORACLE:复杂查询
- --Oracle复杂查询
- Oracle复杂查询
- Oracle复杂查询
- Oracle复杂查询
- oracle复杂查询练习题
- Oracle复杂查询初探
- Oracle复杂查询
- oracle学习 复杂查询
- Oracle复杂查询
- HTML5的新特性--基础知识(2)
- 汇编语言中的first和follow集合的求法
- [绍棠] [iOS 10 打包静态库支持armv7] 静态库打包 .a armv7
- CSS3属性兼容处理
- 修正Linux下WPS字体库缺失
- Oracle复杂查询(三)
- 微信公众平台开发入门教程
- 524. Longest Word in Dictionary through Deleting
- 当IE8 background-color不生效时
- java通过jni调用tuxedo
- Idea的使用与感受(三)
- 系统测试
- JS function length的含义
- HTML5的新特性--基础知识(3)