1 what是子查询
- 一个查询的结果做为另一个查询的条件
- 有查询的嵌套,内部的查询称为子查询
- 子查询要使用括号
2 子查询的结果是一个值的时候
SELECT 查询字段 FROM 表 WHERE 字段=(子查询);
案例:查询工资最高的员工是谁?
![2dbe6db67989a8291402de656c538832.png](https://i-blog.csdnimg.cn/blog_migrate/8bf931c3ff35dded808862f0dcbe98da.png)
查询工资小于平均工资的员工有哪些?
![64430dc3a40a229b61279b4ac897d3a8.png](https://i-blog.csdnimg.cn/blog_migrate/29042ffe4874924f9297f2c03c555150.png)
3 子查询结果是多行单列的时候
- 子查询结果是单例多行,结果集类似于一个数组,父查询使用 IN 运算符
- SELECT 查询字段 FROM 表 WHERE 字段 IN (子查询)
查询工资大于5000的员工,来自于哪些部门的名
![ed660980bcbd4d44313276ed880917f5.png](https://i-blog.csdnimg.cn/blog_migrate/21f80a46397985fab110d8d4d9cda051.png)
查询开发部与财务部所有的员工信息
![cdec94429e498bcf87b726cb903870aa.png](https://i-blog.csdnimg.cn/blog_migrate/5dc01415d3501b5580b809bd53e9a991.png)
4 子查询的结果是多行多列
- 子查询结果只要是多列,肯定在 FROM 后面作为表
- SELECT 查询字段 FROM (子查询) 表别名 WHERE 条件
- 子查询作为表需要取别名,否则这张表没有名称则无法访问表中的字段 (这个相当重要,不加的话sql是运行不了的)
查询出2011年以后入职的员工信息,包括部门名称
![2536cba300e1a9730e8e2fcde46ccc8d.png](https://i-blog.csdnimg.cn/blog_migrate/ec5dd6fc57e6b375f6de02033e151ea2.png)
也可以使用表连接
![80ecdfd142b3d5758595ff1ea9f360db.png](https://i-blog.csdnimg.cn/blog_migrate/352ff40dc88ae4647fb7402a63ecdacc.png)