【MySQL数据库】SQL 查询封神之路:步步拆解核心操作,手把手帮你解锁高阶4
四. 复合查询
在上面我们介绍了查询中一些基本的使用方法,下面将介绍一些更为复杂的筛选场景。
此处依旧是使用上面的三张表来进行演示。
3.1 子查询
- 子查询:一条查询内部可以包含其他查询语句。
两种方法:
- 方法一:对员工工资进行降序,输出第一行的数据:

这种方法有一个问题就是:如果有多个相同的最高工资我们无法进行全部输出,此时更应该使用方法二;
方法二:使用子查询,先找出最高工资,在拿到表中进行比对,看谁的工资是最高工资:

3.2 多表查询
在emp表中只有不能号,而部门名称在dept表中,因此要进行多表查询。
- 关于多表查询就需要使用笛卡尔积来实现。
笛卡尔积组合:就是将两个表中的数据进行穷举组合。
比如下面将员工表与部门表进行笛卡尔积:

此时就会现成一张很大的表,该表通过枚举的方式进行组合,即枚举emp表中的每一行,与dept表中的每一行进行组合。
- 在进行多表查询的时候要进行数据的筛选,每一个成员并不需要与所有部门进行组合,只需要与相关部门进行组合即可,依次要进行
where子查询进行筛选。

注意:在进行使用成员的时候,要指明使用哪一个表的成员,对于重复的列一定要进行指明,对于不重复的列可以不进行指明。
3.3 自连接
可以,但是不能直接进行,因为如果直接进行两个表是一样的,在指定列名称的时候就不知道指定那一张表中的了,所以在进行笛卡尔积的时候要对两张表取别名。
比如下面这个问题:
此时就可以通过自连接的方式来进行实现:

阅读剩余
版权声明:
作者:SE_Meng
链接:https://www.cnesa.cn/9058.html
文章版权归作者所有,未经允许请勿转载。
THE END