在下面的查询中 where 做什么?

What does where do in the below query?

SELECT
    COUNT(emp.empNo)
FROM
    Employee emp
WHERE
    NOT EXISTS (SELECT dept.empNo
                FROM department dept
                WHERE emp.empNo = dept.empNo);

where 条件(其中 emp.empNo = dept.empNo)在上述查询中表示什么?无论有没有 where 条件,我都会得到不同的结果。我是甲骨文的新手。谁能帮我理解一下?

该查询意味着您只查找那些不存在与该员工的 empNo 具有相同 empNo 的部门的员工。

我想这是一个查找那些不是任何部门经理的员工的查询(如果我们假设部门的 empNo 是部门经理的 empNo)。

不过,如果您提供员工表和部门表的架构会更好。

查询基本上是查找不属于某个部门的员工人数。

NOT EXISTS 表示查询未包含 returns 行。因此,对于在部门 table 中找不到匹配行的任何员工,他们都被计算在内。

同上

SELECT
    COUNT(emp.empNo)
FROM
    Employee emp
WHERE
    emp.EmpNo NOT IN ( SELECT
                           empNo
                       FROM 
                           department)

您的查询显示不在 emp table 但在部门 table 中的员工数。 假设我们有两个 tables emp 和 dept :

emp         dept
1             1
2             2
3             3
4             4   
5             5
              6
              7

从给定的 table 我们在两个 table 中都有 emp 1 到 5 但在部门 table 中有 2 名员工 (6,7) 不存在于emp table 并且您的查询正在显示这些 emp 的计数,即 2