我正在尝试解决以下任务。
以下数据定义定义了组织的员工层次结构。
如果任何其他员工的managerId设置为第一个员工ID,则该员工是经理。作为经理的员工可能也有经理,也可能没有经理。
TABLE employees
id INTEGER NOT NULL PRIMARY KEY
managerId INTEGER REFERENCES employees(id)
name VARCHAR(30) NOT NULL
编写一个查询,选择不是经理的雇员的姓名。
我试过:
SELECT name FROM employees where id NOT IN (SELECT managerId FROM employees)
结果并不理想,怎么了
2条答案
按热度按时间vecaoik11#
通过添加ManagerID is not null作为where条件,它可以防止返回null并打乱NOT IN的预期用途。
mm9b1k5b2#
如果子查询返回
null
,则NOT IN
将不起作用:因此,我将使用
NOT EXISTS
而不是NOT IN
: