时间:2021-07-01 10:21:17 帮助过:23人阅读
在SQL中允许多层嵌套。而子查询,即嵌套在其他查询中的查询。
理解子查询的关键在于把子查询当作一张表来看待。外层的语句可以把内嵌的子查询返回的结果当成一张表使用。
–子查询要用括号括起来
–将子查询放在比较运算符的右边(增强可读性)
6.2 子查询的种类(A)
1.在where中使用的子查询
--查询部门名称为RESEARCH、SALES select * from emp where deptno in (select deptno from dept where dname in (‘RESEARCH‘, ‘SALES‘)) --查询有哪些人的薪水是在整个雇员的平均薪水之上的 select ename,empno, sal, sal+nvl(comm,0) from emp where sal+nvl(comm,0)>(select avg(sal+nvl(comm,0)) from emp); --查在雇员中有哪些人是经理人 select empno, ename from emp where empno in ( select distinct mgr from emp ); --找出部门编号为20的所有员工中收入最高的职员 select * from emp where sal >= all( select sal from emp where deptno = 20) and deptno = 20
2.在from后面使用子查询
--我们要求每个部门平均薪水的等级 select t1.deptno, t1.savg, s.grade from (select deptno, avg(sal) savg from emp group by deptno) t1 join salgrade s on t1.savg between s.losal and s.hisal --求每个部门薪水的平均等级 select t1.deptno, avg(t1.grade) from (select e.deptno, s.grade from emp e, salgrade s where e.sal between s.losal and s.hisal) t1 group by t1.deptno
Oracle 连接查询
标签:使用 可读性 多层 需要 column 嵌套 比较 dna bsp