美文网首页
Oracle 单行子查询和多行子查询

Oracle 单行子查询和多行子查询

作者: 你家门口的两朵云 | 来源:发表于2020-10-19 20:52 被阅读0次
    --什么是单行子查询?
    --从子查询中返回一行结果的查询
    
    select e.employee_id,e.last_name,e.salary
    from employees e
    where e.department_id=( select e.department_id from employees e where e.employee_id=105);
    
    --总结:以上语句解决了这些问题:查到雇员号为105的人所在部门的所有雇员的信息。
    
    -----------------------------------------------------------------------------------------
    
    select e.employee_id,e.last_name,e.salary
    from employees e
    where e.department_id = (select e.department_id from employees e where e.employee_id = 105) and e.salary>5000;
    
    --总结:以上语句解决了这些问题:查到雇员号为105的人所在部门的所有雇员 中工资高于5000的人员的信息。
    
    -----------------------------------------------------------------------------------------
    
    
    select e.employee_id,e.last_name,e.salary
    from employees e
    where e.department_id = (select e.department_id from employees e where e.employee_id = 105) and e.salary>=(select AVG(e.salary) from employees e);
    
    --总结:以上查询解决了问题:查询出来雇员号为105的雇员所在部门中薪资大于所有人平均工资的雇员信息。
    
    
    -----------------------------------------------------------------------------------------
    -----------------------------------------------------------------------------------------
    
    --多行子查询
    --什么是多行子查询
    --子查询返回多行称为子查询
    
    
    -- IN运算符
    select e.employee_id,e.last_name,e.salary,e.department_id
    from employees e
    where e.salary IN(select e.salary from employees e   where e.department_id =60);
    
    --总结:以上查询中IN的作用:in(里面包含多个符号条件的数据)
    
    --查询select e.salary from employees e   where e.department_id =60得到:(9000,6000,4800,4800,4200)
    --以上等价于:
    select e.employee_id,e.last_name,e.salary,e.department_id
    from employees e
    where e.salary IN(9000,6000,4800,4800,4200);
    
    
    --ANY运算符(同SOME运算符)
    
    select e.last_name
    from employees e
    where e.salary < ANY (select e.salary  from employees e where e.department_id = 60);
    
    --总结:ANY 一条数值>= 每一条(多个数值集合)中的任何一个
    
    select e.last_name
    from employees e
    where e.salary <  (select MAX(e.salary)  from employees e where e.department_id = 60);
    
    --总结:使用MAX( )函数可以直接找到多行函数的数值的最大值。
    
    

    相关文章

      网友评论

          本文标题:Oracle 单行子查询和多行子查询

          本文链接:https://www.haomeiwen.com/subject/omulmktx.html