开启辅助访问
帐号登录 |立即注册

MySql语句中如何正确使用子查询

 
1、什么是子查询?
select语句中嵌套select语句,被嵌套的select语句称为子查询.

2、子查询都可以出现在哪里呢?
select
...(select) .
from
...(select) .
where
...(select) .

3、where子句中的子查询

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

select
ename, sal
from
emp
where
sal>min(sal) ;
ERROR 1111 (HY000) : Invalid use of group function
where子句中不能直接使用分组函数。

实现思路:
第一步:查询最低工资是多少
select min(sal) from emp;
第二步:找出>800的
select ename,sal from emp where sal > 800;
第三步:合并
select ename,sal from emp where sal > (select min(sal) from emp) ;

4、from子句中的子查询
注意: from后面的子查询,可以将子查询的查询结果当做一张临时表。 (技巧)

案例:找出每个岗位的平均工资的薪资等级。
实现思路:
第一步:找出每个岗位的平均工资(按照岗位分组求平均值)

select job,avg (sal) from emp group by job ;
第二步:克服心理障碍,把以上的查询结果就当做一张真实存在的表t.
mysql> select * from salgrade; s表

t表和s表进行表连接,条件: t表avg(sal) between s. losal and s.hisal; .
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;

5、select后面出现的子查询
案例:找出每个员工的部门名称,要求显示员工名,部门名?
select
e. ename ,e . deptno, (select d.dname from dept d where e .deptno = d. deptno) as dname
from
emp e;
注意:对于select后面的子查询来说,这个子查询只能一次返回1条结果,
多于1条,就报错了!




案例数据库

案例数据库
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

友情链接
  • 艾Q网

    提供设计文章,教程和分享聚合信息与导航工具,最新音乐,动漫,游戏资讯的网站。