数据表
链接:https://pan.baidu.com/s/1dPitBSxLznogqsbfwmih2Q
提取码:b0rp
--来自百度网盘超级会员V5的分享
子查询举例
子查询的分类
单行子查询 = > >= < <= != <>
单行子查询 WHERE中的子查询
查询工资大于149号员工工资的员工信息
查询job_id与141员工相同,salary比143员工多的员工姓名,job_id和工资
查询公司工资最少的员工的last_name,job_id和salary
查询与141号员工的manager_id和department_id相同的其他员工的employee_id,manager_id,department_id
查询与141或171号员工的manager_id和department_id相同的其他员工的employee_id,manager_id,department_id
单行子查询 HAVING中的子查询
查询最低工资大于50号部门最低工资的部门id和其最低工资
CASE中的子查询
查询员工的employee_id,last_name和location.其中,若员工department_id与location_id为1800的department_id相同,则location为'Canada',其余则为'USA'
子查询中的空值问题
子查询为null的情况 不会报错 导致主查询也没有
非法使用子查询
其实这就是多行子查询
多行子查询
子查询返回了多行数据
1.查询其他job_id中比job_id为'IT_PROG'部门任一工资低的员工号,姓名,job_id以及salary
2.查询其他job_id中比job_id为'IT_PROG'部门所有工资低的员工号,姓名,job_id以及salary
3.查询平均工资最低的部门id 单行函数可以嵌套 聚合函数嵌套Oracle中可以 但是Mysql中不行
把子查询当一张表
多行子查询的空值问题
相关子查询 子查询用到了主查寻的表
查询员工中工资大于本部门平均工资的员工的last_name,salary和其department_id
查询员工的id,salary,按照department_name排序
在order by中使用子查询
哪些位置可以写子查询
结论:除了GROUP BY 和 LIMIT中 其他位置都可以用子查询
SELECT中
FROM中
WHERE中
HAVING中
ORDER BY中
若employees表中employee_id与job_history表中employee_id相同的数目不小于2,输出这些相同id的员工的员工id,last_name,job_id
意思就是调整岗位两次以上的
EXISTS 与NOT EXISTS关键字