Adr*_*los 0 sql oracle subquery
我试图编写一个查询来列出没有任何员工的部门的ID和名称.我找到了一个有效的查询,但我不明白为什么我的方法不起作用.
除了WHERE子句中的子查询之外,两个查询都是相同的.
我的工作方法:IN ... IS NULL(编辑:它没有回报价值)
SELECT
department_id,
department_name
FROM
departments
WHERE
department_id IN (
SELECT
department_id
FROM
employees
WHERE
department_id IS NULL
)
ORDER BY
department_name;
Run Code Online (Sandbox Code Playgroud)
WORKING方法:NOT IN ...不是NULL
SELECT
department_id,
department_name
FROM
departments
WHERE
department_id NOT IN ( --why -> IN... IS NULL is not working?
SELECT
department_id
FROM
employees
WHERE
department_id IS NOT NULL
)
ORDER BY
department_name;
Run Code Online (Sandbox Code Playgroud)
NULL == NULL从来都不是真的.所以你问是否department_id在一组department_ids中的哪个department_id是NULL.这绝不是真的.在第二个查询中,您正在查找不在department_ids列表中的department_ids,其中department_idnot不是NULL.这将为您提供不在表中的NULL department_id和AND .department_idemployees
我会注意到子查询中的WHERE子句不是必需的:
WHERE
department_id NOT IN (
SELECT department_id FROM employees
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |