子查询
查询最高工资的人员信息
错误写法
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)
练习
查询部门编号是20的员工信息,并且其工资大于该部门的平均工资
查询和scott同一个部门、且工资比scott低的员工信息
select * from emp where deptno=(select deptno from emp where ename='SCOTT') and sal<(select sal from emp where ename='SCOTT')查询职务和SCOTT相同,入职时间比SCOTT更早的时间
select * from emp where job=(select job from emp where ename='SCOTT') and hiredate<(select hiredate from emp where ename='SCOTT')查询出部门编号是10的,工资最高的员工信息
算出部门30 中得到最多奖金的员工姓名
得到工资大于自己部门平均工资的员工信息