Sql server SQL Server中的自连接数据

Sql server SQL Server中的自连接数据,sql-server,join,self-join,Sql Server,Join,Self Join,我有一个表Employee,其中包含姓名和经理id,因此我使用自联接查找员工的经理 我的表格结构和表格数据: CREATE TABLE Employee ( EmployeeID INT PRIMARY KEY, Name NVARCHAR(50), ManagerID INT ) INSERT INTO Employee SELECT 1, 'Mike', 3 UNION ALL SELECT 2, 'David', 3 UNION A

我有一个表
Employee
,其中包含姓名和经理id,因此我使用自联接查找员工的经理

我的表格结构和表格数据:

CREATE TABLE Employee
(
    EmployeeID INT PRIMARY KEY,
    Name NVARCHAR(50),
    ManagerID INT
)

INSERT INTO Employee
    SELECT 1, 'Mike', 3
    UNION ALL
    SELECT 2, 'David', 3
    UNION ALL
    SELECT 3, 'Roger', NULL
    UNION ALL
    SELECT 4, 'Mary', 2
    UNION ALL
    SELECT 5, 'Joseph',2
    UNION ALL
    SELECT 7, 'Ben',2
选择所有数据

SELECT * 
FROM Employee
输出为:

现在,当我使用此查询时:

 SELECT e1.Name, e2.NAME AS 'mngrname'
 FROM Employee e1
 INNER JOIN Employee e2 ON e1.EmployeeID = e2.ManagerID
我得到的数据如下:

现在,当我将查询更改为:

SELECT e1.Name, e2.NAME AS 'mngrname'
FROM Employee e1
INNER JOIN Employee e2 ON e1.ManagerID = e2.EmployeeID
输出为:

问题,;为什么会这样?为什么数据会发生变化

SELECT e1.Name, e2.NAME AS 'mngrname'
 FROM Employee e1
 INNER JOIN Employee e2 ON e1.EmployeeID = e2.ManagerID
这里您可以在join中找到
e1的经理
。因为两个表相同,所以它是自联接。在这个联接中,别名
e1
Employee
表,
e2
manager

所以
e1.Name
Employee Name
e2.Name
manager

现在,还可以将别名e1设置为经理表,将别名e2设置为员工表。 在这种情况下,它们将产生相同的结果,但列名将包含不同的信息

SELECT e1.Name, e2.NAME AS 'mngrname'
FROM Employee e1
INNER JOIN Employee e2 ON e1.ManagerID = e2.EmployeeID
这里e1是经理表,e2是员工表


因此,
e1.Name
manager Name
e2.Name
Employee

,因为这是一个不同的查询。这完全有道理——我不知道这里有什么可误解的——为什么你认为应该是一样的?