MySQL基础知识—子查询

定义

select语句中嵌套select语句,被嵌套的select语句被称为子查询。

语法

select
	...(select).
from
    ...(select).
where
	...(select).

即,子查询在select、from、where都可以有。

where子句中的子查询

案例:找出比最低工资高的员工姓名和工资。

select ename,sal from EMP where sal > min(sal);

结果:

image-20210921164211142

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);

结果:

image-20210921164603622

from子句中的子查询

注意:from后的子查询,可以将子查询的查询结果当做一张临时表。(技巧)

案例:找出每个岗位的平均工资的薪资等级。

1、找出每个岗位的平均工资(按照岗位分组求平均工资)

select job,avg(sal) from EMP group by job;

image-20210921165012406

2、将上面的表当做一张临时表t,薪资等级表是SALGRADE表。

select * from SALGRADE;

image-20210921165701525

然后将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;

结果:

image-20210921170021047

select后出现的子查询(了解,不需要掌握)

Guess you like

Origin blog.csdn.net/kuangd_1992/article/details/120403348