码迷,mamicode.com
首页 > 其他好文 > 详细

子查询

时间:2018-04-05 23:40:05      阅读:348      评论:0      收藏:0      [点我收藏+]

标签:name   group   isa   cot   公司   rom   存在   span   info   

什么是子查询?

  select语句里面嵌套select语句,就叫做子查询

子查询的嵌套位置:  

  子查询语句可以嵌套在select/from/where后面,下面分别举出三个位置的不同例子:

 

例1:找出薪水比公司平均薪水高的员工,要求显示员工名和薪水

mysql> select ename,sal from emp where sal>(select avg(sal) from emp);
+-------+---------+
| ename | sal     |
+-------+---------+
| JONES | 2975.00 |
| BLAKE | 2850.00 |
| CLARK | 2450.00 |
| SCOTT | 3000.00 |
| KING  | 5000.00 |
| FORD  | 3000.00 |
+-------+---------+

例2:找出每个部门的平均薪水,要求显示平均薪水的薪水等级

第一步:先找出每个部门的平均薪水

mysql> select deptno,avg(sal) avgsal from emp group by deptno;
+--------+-------------+
| deptno | avgsal      |
+--------+-------------+
|     10 | 2916.666667 |
|     20 | 2175.000000 |
|     30 | 1566.666667 |
+--------+-------------+

把结果看成一个临时存在的表t

第二步:找出临时表t每个部门平均薪水的薪水等级

mysql> select t.deptno,t.avgsal,s.grade from (select deptno,avg(sal) avgsal from emp group by deptno) t join salgrade s on t.avgsal between s.losal and s.hisal;
+--------+-------------+-------+
| deptno | avgsal      | grade |
+--------+-------------+-------+
|     10 | 2916.666667 |     4 |
|     20 | 2175.000000 |     4 |
|     30 | 1566.666667 |     3 |
+--------+-------------+-------+

 

例3:首先忽略括号里面的子句,select e.ename from emp e,即找出员工名,再看括号里面,可以得出,结果是找出员工名即其对应的单位名

技术分享图片

 

子查询

标签:name   group   isa   cot   公司   rom   存在   span   info   

原文地址:https://www.cnblogs.com/xqr2018/p/8724837.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!