这是我的表 tblEmployee ,当我尝试使用自我联接查询时,其结果在移动列时会有所不同,有人可以向我解释这两个查询之间的区别吗?
EmployeeID Name ManagerID 1 Mike 3 2 Rob 1 3 Todd NULL 5 Ben 1 6 Sam 1
查询_1
SELECT E.Name AS Employee, M.Name AS Manager from tblEmployee E LEFT JOIN tblEmployee M on E.ManagerID = M.EmployeeID
输出
Employee Manager Mike Todd Rob Mike Todd NULL Ben Mike Sam Mike
QUERY_2
SELECT E.Name AS Employee, M.Name AS Manager from tblEmployee E LEFT JOIN tblEmployee M on E.EmployeeID = M.ManagerID
Employee Manager Mike Rob Mike Ben Mike Sam Rob NULL Todd Mike Ben NULL Sam NULL
首先简单说明一下:左联接采用第一个表中的每一行,并且在所选列的第二个表中至少具有匹配项。
在第 一个查询中, 您正在考虑每一行的 Manager ID ,并在第二个表中查找 Employee ID 的匹配项:由于第二个表中的值( Employee ID )是 键 (至少在示例定义中),因此,只能找到与该ID匹配的一行。
例如:第一行Mike的 Manager ID = 3,当您查看该表时,只有一行的 Employee ID = 3,即Todd
在 第二个查询中, 您正在考虑每一行的 Employee ID ,并在第二张表中查找 Manager ID 的匹配项:由于可能有不止一行具有相同 Manager ID的 行,因此您将为每一行获得更多的价值。
例如:第一行Mike的 员工ID 为1,当您查看该表时,您有三行 anager ID = 1,分别是Rob,Ben和Sam。