左连接的工作

时间:2015-02-23 10:00:42

标签: sql

我有一个例子,表中有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

请解释我的联合

1 个答案:

答案 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