SQL - 不存在的地方

SQL - WHERE NOT EXISTS

我和员工有一个 table 身份证姓名工资

并且我通过以下 SQL 声明获得薪水最高的员工:

SELECT *
FROM Emplyees eOut
WHERE NOT EXISTS (SELECT * 
                  FROM Emplyees eIn 
                  WHERE eIn.Salary > eOut.Salary)

据我所知,只有当内部语句为真时,才会执行外部语句,那么为什么会给出结果? 我不明白为什么只有一个结果,这是如何处理的,为什么 NOT 和 > 对此很重要?

查询返回 Employees。但不是全部,如果有任何员工的薪水比这名员工高,它不会显示员工。为每个员工评估内部查询。换句话说,它是 returns 薪水最高的员工。如果两名员工的最高薪水相同,可能会增加 return 行。

表达式:

NOT EXISTS (SELECT * FROM Emplyees eIn WHERE eIn.Salary > eOut.Salary)

是一个布尔表达式,可能的值为 truefalse
当内部查询 returns(至少)1 行时,它获得值 false,如果内部查询 returns 没有行,它获得值 true

你的假设:

the outer statement will be executed only if the inner one is true

因为它的措辞是错误的。

声明:

SELECT * FROM Emplyees eOut

将被执行 return 所有 table Emplyees 的行,对于这些行中的每一行 WHERE 子句将其条件评估为 truefalse.
因此,对于 table 的每一行,条件 NOT EXISTS ... 将决定该行是否会出现在最终结果中。

要理解为什么 NOT 和 > 在这种情况下很重要,请考虑这样的查询:

Select every employee for whom does not exist another employee with greater salary.

SELECT *
    FROM Emplyees 
    ORDER BY Salaray DESC
    LIMIT 1

试试这个查询