我有一个例子,表中有ID,NAme和M_if(managerID)。我按以下方式填写表格
Id Name M_id
1 A 2
2 B NUll
3 C 1
4 D 3
5 E 2
Id是员工ID,名称,M_id是经理ID。在上面的示例中,A的经理是2(B),B没有经理,C的经理是1(A),依此类推。我需要找出员工的姓名和经理的姓名。我通过排列和组合编写了以下查询,这给了我正确的结果,但我无法理解查询(左连接)的确切工作方式。请让我解释这个概念。
SELECT (e.Name), ee.name FROM test.employee e
left join test.employee ee on ee.Id = e.M_id
order by e.Id;
结果我得到了
A B
B
C A
D C
E B
请解释我的联合
答案 0 :(得分:0)
两个实例存在于同一个表中:
e
Id Name M_id
1 A 2
2 B NUll
3 C 1
4 D 3
5 E 2
ee
Id Name M_id
1 A 2
2 B NUll
3 C 1
4 D 3
5 E 2
根据您的加入条件on ee.Id = e.M_id
因为左连接,将选择第一行实例 e ,e.M_id将与ee.Id进行比较,第二行将从同一表的第二个实例中选择。
从这两个表中选择数据如下:
e.Id e.Name e.M_id | ee.Id ee.Name ee.M_id
1 A 2 | 2 B NUll
2 B NUll |
3 C 1 | 1 A 2
4 D 3 | 3 C 1
5 E 2 | 2 B NUll
这就是为什么显示
A B