sql - 编写自联接查询?

标签 sql join

我有下表的值

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.

但问题是第 3 名员工 (Sanal) 没有老板。
所以我想要这个确切的结果:
ID  EmpName BossName
1   Abhijit Haris
2   Haris   Sanal
3   Sanal   Null

我该怎么办?

最佳答案

使用右连接

 select E1.ID,E1.EmpName, E.EmpName as BossName from #tmpEmployee E right join #tmpEmployee E1 on E1.EmpBossID=E.ID

ID  EmpName BossName
1   Abhijit Haris
2   Haris   Sanal
3   Sanal   NULL

我觉得你没问题

关于sql - 编写自联接查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17417592/

相关文章:

hibernate - 当我在 hql 中使用 join 关键字时,为什么会得到 Path Expected for join

mysql - 使用两个 MySQL 循环填充表

mysql - 在 MySQL 中使用 HAVING

mysql - 更新表中选定 ID 的多行

mysql - 查询一个报告的两个表(高级)

mysql - 如何在 Mysql 中连接两个表并根据不同列对它们的列求和

android - 为什么堆栈跟踪行号与源代码行号不匹配?

只有当所有行都是 WHERE 的值时,MySQL 才返回单行

sql - 如何在 SQL 连接中使用 lat/lng 半径进行选择

mysql 高效连接 2 个表到相同的 2 个表