oracle子查询

简介:

子查询概念 :当一个查询的结果是另一个查询的条件时,称之为子查询。

使用子查询注意事项:

         子查询可以嵌套多层

         子查询需要圆括号()括起来

子查询语法:

SELECT     select_list

FROM       table

WHERE    expr operator

                           (SELECT    select_list

                         FROM                  table);

l  子查询 (内查询) 在主查询之前一次执行完成。

l  子查询的结果被主查询使用 (外查询)。

举例:查询员工的工资大于JONES的员工信息

分析过程如下:

首先:查询JONES的员工工资是多少 :结果2975

SQL> select sal from emp where ename='JONES';

实际上我们要查询的是:薪资大于2975的员工的信息写法如下:

SQL> select * from emp where sal>2975;

//综合以上写出子查询的结果如下:

SQL> select * from emp where sal>(select sal from emp where ename='JONES');

注意:

l  子查询要包含在括号内

l  将子查询放在比较条件的右侧

 

根据查询的结果(内部嵌套查询的结果)把子查询的类型分为单行子查询与多行子查询,

   注意:

l  单行操作符对应单行子查询,多行操作符对应多行子查询。

单行操作符

>、>=、 <、 <= 、<>、=

举例:

//查询编号7876相同职位的员工信息 并且薪资大于编号为7521的薪资的员工信息

SQL> select * from emp where job=( select job from emp where empno=7876) and sal>( select sal from emp where empno=7521);

//子查询含有组函数

SQL> select * from emp where sal>(select avg(nvl(sal,0)) from emp);

//子查询含有having子句查询部门的最小工资大于20号部门最小工资的部门号及最小工资数

SQL> select deptno,min(sal) from emp group by deptno having min(sal)>( select min(sal) from emp where deptno=20);

 

备注:子查询可以返回空行 没要查询到结果是可以的。

 

多行子查询

l   返回多行。

l  使用多行比较操作符。

操作符如下图:

操作符

描述

In

等于列表中的任何一个

Any

子查询返回的任意一个值比较 相同还有some

All

和子查询返回的所有值比较  

Exists

 

 

//查询薪水小于工作岗位CLERK的任何一个薪资的员工信息并且不包含工作岗位为CLERK的员工信息

SQL> select * from emp where sal < any (select sal from emp where job='CLERK') and job<>'CLERK';

//all与所有值比较 >all 代表的是大于查询结果的最大值

SQL> select * from emp where sal > all (select sal from emp where job='CLERK') and job<>'CLERK';

//查询岗位与部门编号为10相同的员工信息 不包含自己。

SQL> select * from emp where job in(select job from emp where deptno=10) and deptno<>10;

 

 

原文:http://blog.csdn.net/java958199586/article/details/7350730



本文转自贺满博客园博客,原文链接:http://www.cnblogs.com/puresoul/p/3554506.html ,如需转载请自行联系原作者。
目录
相关文章
|
5月前
|
SQL Oracle 关系型数据库
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
107 0
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
|
11月前
Oracle-高级子查询
Oracle-高级子查询
44 0
|
SQL 机器学习/深度学习 移动开发
Oracle多表查询,子查询,分页查询
🍅程序员小王的博客:程序员小王的博客 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习路线:java自学的学习路线
324 0
Oracle多表查询,子查询,分页查询
|
SQL Oracle 关系型数据库
Oracle中的分组查询、子查询、多表连接
Oracle中的分组查询、子查询、多表连接
263 0
Oracle中的分组查询、子查询、多表连接
|
SQL Oracle 关系型数据库
|
Oracle 关系型数据库
oracle学习60-oracle之高级子查询2
oracle学习60-oracle之高级子查询2
89 0
oracle学习60-oracle之高级子查询2
|
Oracle 关系型数据库
oracle学习61-oracle之高级子查询1
oracle学习61-oracle之高级子查询1
76 0
oracle学习61-oracle之高级子查询1
|
Oracle 关系型数据库
oracle学习59-oracle之高级子查询之课后练习
oracle学习59-oracle之高级子查询之课后练习
54 0
oracle学习59-oracle之高级子查询之课后练习
|
SQL 移动开发 Oracle
6-5 Oracle表复杂查询 -子查询
子查询是指嵌入在其它sql语句中的select语句,也叫嵌套查询。
204 0
|
Oracle 关系型数据库
oracle学习72-oracle之单行函数之子查询课后练习2
oracle学习72-oracle之单行函数之子查询课后练习2
98 0

推荐镜像

更多