Mysql三天入门(二) 子查询
子查询
什么是子查询?
子查询就是嵌套的select语句,可以理解为子查询是一张表。
- 子查询可以出现在哪里?
 select
 ..(select).
 from
 ..(select).
 where
 ..(select).
where语句中使用子查询
- 案例:找出高于平均薪资的员工信息。
- 第一步:找出平均薪资
 select avg(sal) from emp;
- 第二步:取得大于平均薪水的员工
 select * from emp where sal > 2073.214286;
- 第一步和第二步合并
 select * from emp where sal > (select avg(sal) from emp);
 
- 第一步:找出平均薪资
from后面嵌套子查询
- 案例:找出每个部门平均薪水的等级。
- 第一步:找出每个部门平均薪水(按照部门编号分组,求sal的平均值)
 select deptno,avg(sal) as avgsal from emp group by deptno;
- 第二步:将以上的查询结果当做临时表t,让t表和salgrade s表连接,条件是:t.avgsal between s.losal and s.hisal
 
- 第一步:找出每个部门平均薪水(按照部门编号分组,求sal的平均值)
select 
	t.*,s.grade
from
	(select deptno,avg(sal) as avgsal from emp group by deptno) t
join
	salgrade s
on
	t.avgsal between s.losal and s.hisal;
在select后面嵌套子查询。
- 案例:找出每个员工所在的部门名称,要求显示员工名和部门名。
- 第一种做法,将员工表和部门表连接
 select e.ename, d.dname from emp e, dept d where e.deptno=d.deptno;
- 第二种做法,在select语句中再次嵌套select语句完成部分名称的查询
 select e.ename, (select d.dname from dept d where e.deptno=d.deptno) as dname from emp e;
 
- 第一种做法,将员工表和部门表连接

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号