--什么是单行子查询?
--从子查询中返回一行结果的查询
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( )函数可以直接找到多行函数的数值的最大值。
网友评论