【发布时间】:2013-07-02 04:47:42
【问题描述】:
我有下表的值
CREATE TABLE #tmpEmployee(ID int, EmpName varchar(50), EmpBossID int)
insert into #tmpEmployee values ( 1, 'Abhijit', 2);
insert into #tmpEmployee values ( 2, 'Haris', 3);
insert into #tmpEmployee values ( 3, 'Sanal', 0);
现在我希望结果如下
ID EmpName BossName
1 Abhijit Haris
2 Haris Sanal
所以我写了以下查询。
select E1.ID,E1.EmpName, E.EmpName as BossName from #tmpEmployee E inner join #tmpEmployee E1 on E1.EmpBossID=E.ID.
但问题是第三名员工(Sanal)没有老板。 所以我想要这个确切的结果:
ID EmpName BossName
1 Abhijit Haris
2 Haris Sanal
3 Sanal Null
我该怎么办?
【问题讨论】:
-
将
inner join替换为left outer join。 -
select E1.ID,E1.EmpName, E.EmpName as BossName from #tmpEmployee E Left Outer join #tmpEmployee E1 on E1.EmpBossID=E.ID 尝试但结果变为 ID EmpName BossName NULL NULL Abhijit 1 阿比吉特哈里斯 2 哈里斯萨纳尔
-
只需将其切换为 RIGHT 连接即可。
-
@Haris - 我对预期结果和您当前的陈述没有仔细研究,但关键是您应该查找
inner和outer连接之间的区别。 -
好的 Lieven Keersmaekers 感谢您的建议