我无法理解这个EXISTS子句的例子

时间:2011-08-12 09:15:56

标签: sql sql-server sql-server-2008

SELECT E1.Department, E1.DeptPhone
FROM EMPLOYEE AS E1
WHERE EXISTS
    (SELECT E2.Department
    FROM EMPLOYEE AS E2
    WHERE E1.Department = E2.Department
        AND E1.DeptPhone <> E2.DeptPhone);

所以,当我读到这个查询时,我认为我从表E2中选择了与E1部门相同的dertments,它们也有不同的电话号码。

由于EXISTS是一个相关的子查询,我也选择了部门(来自E1)和DeptPhone(也来自E1),但我只选择部门使用我的子查询。

换句话说,我正在显示部门(不具有与E1相同的电话号码,但具有与E1相同的部门名称),以及来自E1的DeptPhone。我读得对吗?

2 个答案:

答案 0 :(得分:1)

没有。如果存在一个或多个具有不同电话号码的相同部门,则您从E1选择所有行。

答案 1 :(得分:0)

您正在显示所有部门,其中有另一条记录具有相同的部门名称,但具有不同的电话号码。即,您显示的所有部门都有多个电话号码。