摘要:本文主要向大家介绍了数据库MySQL学习之Mysql之子查询与union用法,通过具体的内容向大家展现,希望对大家数据库MySQL学习有所帮助。
本文主要向大家介绍了数据库MySQL学习之Mysql之子查询与union用法,通过具体的内容向大家展现,希望对大家数据库MySQL学习有所帮助。
Mysql之子查询与union用法
1>子查询基础
where后面嵌套子查询
from后面嵌套子查询
select后面嵌套子查询
2>union的用法
1>子查询基础
什么是子查询?子查询都可以出现在哪里?
select语句当中嵌套select语句,被嵌套的select语句是子查询。
子查询可以出现在哪里?
select
..(select).
from
..(select).
where
..(select).
where后面嵌套子查询
案例:找出高于平均薪资的员工信息
//第一步:找出平均薪资
select avg(sal) from emp;
//第二步:where 过滤
select * from emp where sal;
//第一步与第二步合并
select * from emp where sal >(select avg(sal) from emp);
from后面嵌套子查询
案例:找出每个部门平均薪水的薪资等级。
//第一步:找出每个部门平均薪水
select deptno,avg(sal) from emp group by deptno;
//第二步:将以上查询结果当作临时表t
//让t表和salgrade s表连接,条件是:
//t.avgsal between s.losal and s.hisal
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 e.name,e.sal,e.deptno,s.grade from emp e join salgrade s on e.sal between s.losal and s.hisal;
//第二步:基于以上结果,继续按照deptno分组,求grade平均值
select
e.deptno,avg(s.grade)
from
emp e
join
salgrade s
on
e.sal between s.losal and s.hisal
group by
e.deptno;
//或者根据第一个表的内容创建临时表
select
t.deptno,avg(t.grade) as avg
from
(select e.ename,e.sal,e.deptno,s.grade from emp e join salgrade s on e.sal between s.losal and s.hisal) t
group by
t.deptno;
启示:不要滥用子查询,效率太低,能不使用就不太使用。
select后面嵌套子查询
案例:找出每个员工所在的部门名称,要求显示员工名和部门名。
select
e.ename,d.name
from
emp e
join
dept d
on
e.deptno = d.deptno;
//简单写法
select
e.name,(select d.dname from dempt d where e.deptno = d.deptno a) as dname
from
emp e;
//复杂写法,不经常用,但要会读
2>union的用法
可以将查询结果集相加:
案例:找出工作岗位是SALEMAN和MANAGER的员工?
//第一种
select ename,job from emp where job ='MANAGER' or job = 'SALESMAN';
//第二种
select ename,job from emp where job in('MANAGER','SALESMAN');
//第三种
select ename,job from emp where job ='MANAGER'
union
select ename,job from emp where job ='SALESMAN';
//两张不相干的表中的数据拼接在一起
select ename from emp
union
select dname from dept;
//两者都是一列所以合并成一列
如果连列数都不相同,编译会直接报错。
关注“职坐标在线”(Zhizuobiao_Online)公众号,免费获取学习视频资料、技术就业咨询
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号