0
点赞
收藏
分享

微信扫一扫

子查询

子查询的定义:select语句中嵌套select语句,被嵌套的select语句为子查询。

子查询可以出现的位置:

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

==即可以出现在select后面,from后面,where后面!==

==where出现子查询==

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

第一步:查询最低工资是多少?

第二步:找出大于最低工资的?

第三步:整合前面的两点,得出下面的SQL语句:

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

==from中的子查询==

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

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

第一步:找出每个岗位的平均工资(按照岗位分组求平均值)

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

第二步:把上面的查询结果看作是一张表T。然后把T表和salgrade表连接查询。

select T.*,s.grade from T join salgrade s on T.avg(sal) between s.losal and s.hisal;

第三步,将第二步中的T换成第一步中的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;

==select后面的子查询==(了解即可)

案例问题:找出每个员工的部门名,要求显示员工名,部门名?

select e.ename,(select d.dname from dept d where e.deptno = d.deptno) as dname from emp e;

注意:对于select后面的子查询,这个子查询只能返回一个结果,如果多余一条结果,那么就会报错!!

举报

相关推荐

0 条评论