定义
select语句中嵌套select语句,被嵌套的select语句被称为子查询。
语法
select
...(select).
from
...(select).
where
...(select).
即,子查询在select、from、where都可以有。
where子句中的子查询
案例:找出比最低工资高的员工姓名和工资。
select ename,sal from EMP where sal > min(sal);
结果:
where子句中不能直接使用分组函数。
过程:
1、查询最低工资是多少
select min(sal) from EMP;
2、找出大于800的
select ename,sal from EMP where sal > 800;
3、合并
select ename,sal from EMP where sal > (select min(sal) from EMP);
结果:
from子句中的子查询
注意:from后的子查询,可以将子查询的查询结果当做一张临时表。(技巧)
案例:找出每个岗位的平均工资的薪资等级。
1、找出每个岗位的平均工资(按照岗位分组求平均工资)
select job,avg(sal) from EMP group by job;
2、将上面的表当做一张临时表t,薪资等级表是SALGRADE表。
select * from SALGRADE;
然后将t表和SALGRADE表进行表连接,条件:
t.avg(sal) between s.losal and s.hisal
整个SQL语句如下:
select
t.*,s.grade
from
(select job,avg(sal) as avgsal from EMP group by job) t
join
SALGRADE s
on
t.avgsal between s.losal and s.hisal;
结果: