【MySQL】多表查询的分类2:自连接和非自连接
多表查询的分类2:自连接VS非自连接
1. 非自连接
非自连指的是在多表查询中,连接的是不同的表。我的这篇博文提到的例子都是非自连接。故此不再赘述。
2. 自连接
自连接,顾名思义,就是自己连接自己,指的是在多表查询中连接的是同一张表。
【例子】根据管理者的员工编号 manager_id ,查询员工表 employees 中每一个员工对应的管理者姓名和ID。员工表 employees 如下图所示:
【分析】管理者的员工编号 manager_id 也必定是公司员工,对应着公司的员工编号 employee_id 。因此,我们可以把员工表复制为两份,一份看作员工表 (起别名为 emp );另一份看作管理者表 (起别名为 mgr ) ,如下图所示,通过 emp 的管理者编号 manager_id 与 mgr 员工编号 employee_id 连接起来。
如下代码所示:
SELECT emp.`employee_id`, emp.`last_name`, mgr.`manager_id`, mgr.`last_name` FROM employees emp, employees mgr WHERE emp.`manager_id` = mgr.`employee_id`;
查询结果: