我的SELECT错在哪里?( 在树型结构中寻找叶子节点!)

Amy2008 2002-08-28 05:24:17
表EMPLOYEE:
employeeID managerID
1 null
2 1
3 1
4 2
5 2
6 3
7 3
8 6
9 8
10 8

想找出没有任何下属的所有员工的姓名(即叶子节点),使用以下代码:
SELECT EmployeeID
FROM Employee
WHERE EmployeeID NOT IN
(SELECT DISTINCT ManagerID
FROM Employee
)

结果集却是空的!
分别调试子查询和外面的查询却是正确的!!

请各位指教!

...全文
89 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Amy2008 2002-09-01
  • 打赏
  • 举报
回复
谢谢各位,几种方法都试过了,果然好使!!
分数不多,请各位笑纳....
Chiff 2002-08-28
  • 打赏
  • 举报
回复
为什么要用group by呢?distinct不更好吗?
playyuer 2002-08-28
  • 打赏
  • 举报
回复
SELECT *
FROM Employee
WHERE EmployeeID not IN
(SELECT ManagerID
FROM Employee
where ManagerID is not null
group by ManagerID
)
WorldMobile 2002-08-28
  • 打赏
  • 举报
回复
全是高手,我就不出手了

:-)
j9988 2002-08-28
  • 打赏
  • 举报
回复
SELECT EmployeeID
FROM Employee a left join
(select SELECT DISTINCT ManagerID
FROM Employee where ManagerID) b on a.EmployeeID=b.ManagerID
WHERE b.ManagerID is null
Chiff 2002-08-28
  • 打赏
  • 举报
回复
playyuer(小干部儿) 的不对
having count(*) = 0 是不可能有结果的
j9988 2002-08-28
  • 打赏
  • 举报
回复
SELECT EmployeeID
FROM Employee a left join
(select SELECT DISTINCT ManagerID
FROM Employee where ManagerID is not null) b on a.EmployeeID=b.ManagerID
WHERE b.ManagerID is null
playyuer 2002-08-28
  • 打赏
  • 举报
回复
SELECT *
FROM Employee
WHERE EmployeeID IN
(SELECT ManagerID
FROM Employee
group by ManagerID
having count(*) =0
)
Yang_ 2002-08-28
  • 打赏
  • 举报
回复
SELECT EmployeeID
FROM Employee a
WHERE not exists (SELECT 1 FROM Employee
where ManagerID=a.EmployeeID
)
Chiff 2002-08-28
  • 打赏
  • 举报
回复
SELECT EmployeeID
FROM Employee
WHERE EmployeeID NOT IN
(SELECT DISTINCT isnull(ManagerID,'')
FROM Employee
)

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧