【发布时间】:2019-10-16 20:25:42
【问题描述】:
我正在做一个小的 SQL 练习,并且正在为这个问题挠头。
我正在尝试查找没有其他员工向其报告的所有员工。
这是employees 表的样子:
EmployeeId LastName FirstName Title ReportsTo
1 Adams Andrew General Manager null
2 Edwards Nancy Sales Manager 1
3 Peacock Jane Sales Support Agent 2
4 Park Margaret Sales Support Agent 2
5 Johnson Steve Sales Support Agent 2
6 Mitchell Michael IT Manager 1
7 King Robert IT Staff 6
8 Callahan Laura IT Staff 6
我认为其中一个简单的查询就可以做到:
SELECT *
FROM employees
Where EmployeeId not in (select ReportsTo from employees)
SELECT *
FROM employees
Where EmployeeId not in (ReportsTo)
但是那些返回以下结果,这不是我想要的:
EmployeeId LastName FirstName Title ReportsTo
2 Edwards Nancy Sales Manager 1
3 Peacock Jane Sales Support Agent 2
4 Park Margaret Sales Support Agent 2
5 Johnson Steve Sales Support Agent 2
6 Mitchell Michael IT Manager 1
7 King Robert IT Staff 6
8 Callahan Laura IT Staff 6
为什么NOT IN 返回的项目肯定在该列中?如果我错误地使用了NOT IN,我将如何退回不在ReportsTo 中的物品?
【问题讨论】:
-
第一个查询应该返回一个空的结果集。请改用
NOT EXISTS。 -
指定您要查找的结果。