前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle子查询详解

Oracle子查询详解

作者头像
时间静止不是简史
发布2020-07-24 17:25:24
1K0
发布2020-07-24 17:25:24
举报

子查询

用于当一次查询的结果是另一次查询所需要的时候, 可以使 用子查询

1 单行子查询

子查询的返回结果是单行数据.

a) 查询所有比“CLARK”工资高的员工的信息

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

b) 查询工资高于平均工资的雇员名字和工资

select ename, sal from emp
where sal>(select avg(sal) from emp); 

c) 查询和 SCOTT 同一部门且比他工资低的雇员名字和工资

select ename, sal, deptno 
from emp 
where deptno=(select deptno from emp where 
ename='SCOTT') 
and sal<(select sal from emp where ename='SCOTT'); 

d) 查询职务和 SCOTT 相同,比 SCOTT 雇佣时间早的雇员信息

select * 
from emp 
where job=(select job from emp where ename='SCOTT') 
and hiredate<(select hiredate from emp where 
ename='SCOTT'); 

2 多行子查询

子查询的返回结果是多行数据. 此时, 不能再使用普通的比较运算符了. 多行记录比较运算符: ANY: 跟结果中的任何一个数据进行比较

查询工资低于任何一个“CLERK”的工资的雇员信息

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

ALL: 跟结果中的所有数据进行比较

查询工资比所有的“SALESMAN”都高的雇员的编号、名字和 工资

select empno, ename, sal 
from emp 
where sal>ALL(select sal from emp where 
job='SALESMAN'); 

IN: 等于结果中的任何一个

查询部门 20 中职务同部门 10 的雇员一样的雇员信息

select * 
from emp 
where job in (select job from emp where deptno=10) 
and deptno=20; 

select * 
from emp 
where job =any (select job from emp where deptno=10) 
and deptno=20;

3 相关子查询和不相关子查询

不相关子查询: 子查询不会用到外查询的数据, 子查询可以独立运行. 相关子查询: 子查询会用到外查询的数据, 子查询不能独立运行.

查询本部门最高工资的员工 a) 不相关子查询的实现方式

select * 
from emp e 
where (e.deptno, e.sal) in (select deptno, max(sal) 
from emp group by deptno); 

b) 相关子查询的实现方式 查询最高工资的部门号

select * 
from emp e 
where sal=
(select max(sal) from emp where deptno=e.deptno); 

4 子查询可以作为一张表格进行多表连接查询 

查询每个部门平均薪水的等级

select t.deptno, t.avg_sal, s.grade 
from salgrade s 
join ( 
     select deptno, avg(sal) avg_sal from emp group 
by deptno 
) t 
on t.avg_sal between s.losal and s.hisal 
order by t.deptno;
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 子查询
    • 1 单行子查询
      • 2 多行子查询
        • 3 相关子查询和不相关子查询
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档