MySQL-sql子查询 作者:马育民 • 2020-02-03 22:35 • 阅读:10104 # 子查询 ### 查询最高工资的人员信息 错误写法 ``` select * from emp where sal=max(sal) ``` 正确写法 ``` select * from emp where sal=(select max(sal) from emp) ``` **注意:** - 先执行```where```后面的子查询语句,查询出 **最大值** - 然后再查询等于这个 **最大值** 的记录 ### 查询所有比雇员“CLARK”工资高的员工信息 ``` select * from emp where sal>(select sal from emp where ename='CLARK') ``` **注意:**子查询只返回一个值。如果子查询返回多行或多列,会报错 ### 查询高于平均工资的员工信息 ``` select * from emp where sal>(select avg(sal) from emp ) ``` ### 查询工资最高的员工资料 ``` select * from emp where sal=(select max(sal) from emp) ``` ### 练习 1. 查询部门编号是20的员工信息,并且其工资大于该部门的平均工资 2. 查询和scott同一个部门、且工资比scott低的员工信息 ``` select * from emp where deptno=(select deptno from emp where ename='SCOTT') and sal<(select sal from emp where ename='SCOTT') ``` 3. 查询职务和SCOTT相同,入职时间比SCOTT更早的时间 ``` select * from emp where job=(select job from emp where ename='SCOTT') and hiredate<(select hiredate from emp where ename='SCOTT') ``` 4. 查询出部门编号是10的,工资最高的员工信息 4. 算出部门30 中得到最多奖金的员工姓名 8. 得到工资大于自己部门平均工资的员工信息 原文出处:http://malaoshi.top/show_1EF4uy55jsaJ.html