请检查小提琴:myFiddle
查询:
create table Emp(empId int primary key, EmpName varchar(50),MngrID int)
insert into Emp(empId,EmpName,MngrID)values(1,'A',2)
insert into Emp(empId,EmpName,MngrID)values(2,'B',null)
A有mngr B但A没有mngr,所以从查询中获取记录时它会显示:
EmpId EmpName MngrName(alias MngrName)
1 A B
2 B null
如何使用查询获取上述数据?
答案 0 :(得分:1)
你需要LEFT JOIN表给自己:
select A.empID, A.empName, b.empName as mgrName
from emp A left join emp B on A.mngrID = b.empID
答案 1 :(得分:1)
由于某些原因它在SQLFiddle中不起作用,但我在我自己的SQL Server实例中运行它以验证它是否有效:
SELECT e1.EmpID, e1.EmpName, e2.EmpName
FROM emp e1 LEFT OUTER JOIN emp e2
ON e1.MngrID = e2.EmpID
基本上,你通过声明表的两个实例(e1和e2),然后将第一个实例的MngrID连接到第二个实例的EmpID来进行“自联接”。
答案 2 :(得分:0)
从emp选择empId,EmpName,(SELECT EmpName FROM emp WHERE MngrID = amp1.MngrID)来自emp的AS Manager作为amp1