在每个部门找不到员工

时间:2020-10-20 04:51:41

标签: sql oracle

部门表

DEPARTMENT_ID
| 1       |
| 2       |

员工表

EMPLOYEE_ID | DEPARTMENT_ID
ANDY        | 1

输出

DEPARTMENT_ID|
2

这是我的代码:

SELECT DEPARTMENT_ID
FROM DEPARTMENTS
where department_id!= all ( SELECT department_id
               FROM employees
           );

该代码未显示2,并且输出为空白。

赞:

DEPARTMENT_ID|

2 个答案:

答案 0 :(得分:2)

如果要查找每个部门中每个雇员的 number ,则应使用左联接聚合:

SELECT d.DEPARTMENT_ID, COUNT(e.EMPLOYEE_ID) AS cnt
FROM DEPARTMENT d
LEFT JOIN EMPLOYEES e
    ON d.DEPARTMENT_ID = e.DEPARTMENT_ID
GROUP BY d.DEPARTMENT_ID;

上面的count表达式对employee表中的EMPLOYEE_ID列进行计数。重要的是要注意,如果一个部门没有雇员,那么COUNT将返回零,因为不计算NULL

答案 1 :(得分:1)

SELECT d.department_id 
FROM departments d
LEFT JOIN employees e ON d.department_id = e.department_id
WHERE e.department_id IS NULL

SQLFiddle Demo