我正在尝试解决以下任务。
以下数据定义定义了组织的员工层次结构。
如果任何其他员工将其 managerId 设置为第一个员工 ID,则该员工就是经理。担任经理的员工可能也可能没有经理。
TABLE employees
id INTEGER NOT NULL PRIMARY KEY
managerId INTEGER REFERENCES employees(id)
name VARCHAR(30) NOT NULL
Run Code Online (Sandbox Code Playgroud)
编写一个查询来选择非经理员工的姓名。
我努力了:
SELECT name FROM employees where id NOT IN (SELECT managerId FROM employees)
Run Code Online (Sandbox Code Playgroud)
这没有给出期望的结果。怎么了?
通过添加 ManagerID is not null 作为 where 条件,可以防止 null 返回并扰乱您对 NOT IN 的预期用途。
SELECT name
FROM employees
where id NOT IN (
SELECT managerId FROM employees where managerId is not null
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6200 次 |
| 最近记录: |