Я работаю над небольшим упражнением по 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
возвращает элементы, которые определенно находятся в этом столбце? Как бы я мог возвратить товары, отсутствующие в ReportsTo
, если я неправильно использую NOT IN
?