ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### 10.2、在from语句中使用子查询,可以将该子查询看做一张表 l 查询员工信息,查询哪些人是管理者,要求显示出其员工编号和员工姓名 首先取得管理者的编号,去除重复的 ``` select distinct mgr from emp where mgr is not null; ``` 将以上查询作为一张表,放到from语句的后面 ``` 使用92语法: select e.empno, e.ename from emp e, (select distinct mgr from emp where mgr is not null) m where e.empno=m.mgr; 使用99语法: select e.empno, e.ename from emp e join (select distinct mgr from emp where mgr is not null) m on e.empno=m.mgr; ``` ![](https://img.kancloud.cn/67/97/6797f87c5bdfc8085b139928ead09158_649x223.png) l 查询各个部门的平均薪水所属等级,需要显示部门编号,平均薪水,等级编号 实现思路 1、首先取得各个部门的平均薪水 ``` select deptno, avg(sal) avg_sal from emp group by deptno; ``` ![](https://img.kancloud.cn/c0/64/c0643fc3a4dc4ae0df89ccd0e4456894_548x155.png) 2、将部门的平均薪水作为一张表与薪水等级表建立连接,取得等级 ``` select deptno,avg(sal) avg_sal from emp group by deptno; ``` ``` select * from salgrade; ``` ``` select a.deptno,a.avg(sal),g.grade from (select deptno,avg(sal) avg_sal from emp group by deptno ) a join salgrade g on a.avg(sal) between g.losal and hisal; ``` ![](https://img.kancloud.cn/1b/81/1b81fd7fb04f0daaed1e3129ede30edf_673x531.png)