【MySQL数据库】SQL 查询封神之路:步步拆解核心操作,手把手帮你解锁高阶5

五. 将子查询结果当作表

3.4 子查询和where子句

在前面我们谈到了可以使用子查询对查询的结果进行处理。

下面详细介绍以下子查询搭配where子句的使用效果,使用方法分为三种:

  1. 单行子查询;
  2. 多行子查询;
  3. 多列子查询。

下面一一进行介绍。

3.4.1 单行子查询

使用子查询先找到与SMITH所在的部门,再在表中查找看谁的部门与其相同即可。

其中需要进行两次查找,(1)找到SMITH所在的部门;(2)在emp表中查找与其部门一样的成员。

【MySQL数据库】SQL 查询封神之路:步步拆解核心操作,手把手帮你解锁高阶5

3.4.2 多行子查询

此时同样要进行两次查询:(1)先查找与10号部门的所有岗位;(2)在emp表中查找与所有与10号部门岗位一样的成员。

与上一个单行子查询不一样的是:此次查找出来的第一个表中有多方,而不再是一行;因此此处不能再使用=,而应该使用in表示是否存在表中。

【MySQL数据库】SQL 查询封神之路:步步拆解核心操作,手把手帮你解锁高阶5

此时就需要使用符合查找了,进行多表查询:

【MySQL数据库】SQL 查询封神之路:步步拆解核心操作,手把手帮你解锁高阶5

与上面的查询一样,只不过此时的要求是比表中的数据都高,因此此处使用all

【MySQL数据库】SQL 查询封神之路:步步拆解核心操作,手把手帮你解锁高阶5

除了all,in还有一个any表示比表中任意一个元素怎么样…

3.4.3 多列子查询

此处要进行多列比较,因此可以进行多次单行子查询或者直接将多行作为一个整体进行比较

【MySQL数据库】SQL 查询封神之路:步步拆解核心操作,手把手帮你解锁高阶5

  • 目前全部的子查询都是在where子句中的,充当判断条件;任何时刻,查询出来的临时结构,本质在逻辑上也是表的结构。

3.5 子查询与from子句

进行多次查询:(1)先查询出所有部门的平均工资;(2)将平均工资与所在部门的员工进行结合。

  • 此时就需要先形成一张部门平均工资的表,将该表与员工表进行多表查询。

【MySQL数据库】SQL 查询封神之路:步步拆解核心操作,手把手帮你解锁高阶5

  • 多表查询的核心思想:想办法将办法将多表转化为单表,在MySQL中所有的select问题都可以转化为单表问题
阅读剩余
THE END