oracle-sql子查询

子查询

查询最高工资的人员信息

错误写法

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的,工资最高的员工信息

  5. 算出部门30 中得到最多奖金的员工姓名

  6. 得到工资大于自己部门平均工资的员工信息


原文出处:/show_1EF34wD4eKNF.html