2011-08-12 63 views
1
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); 

所以,當我讀到這個查詢我認爲我選擇了dertments,從表E2,這等於從E1部門,這也有不同的電話號碼。我無法理解這個例子的EXISTS子句

由於EXISTS是一個相關的子查詢,我也選擇了部門(來自E1)和DeptPhone(也來自E1),但我只選擇部門工作與我的子查詢。

換句話說,我正在顯示部門(與E1沒有相同的電話號碼,但部門名稱與E1相同)以及來自E1的DeptPhone。我讀的是對的嗎?

回答

0

您正在顯示具有相同部門名稱但具有不同電話號碼的另一記錄的所有部門。即,您顯示的所有部門都有多個電話號碼。

+0

因此,此部分: WHERE E1.Department = E2.Department AND E1.DeptPhone <> E2.DeptPhone); 是否選擇具有不同電話號碼的部門。因此,LandscapingDept1 = LandscapingDept2,但LandscapingPhone1 <>園林綠化Phone2。 然後,如果有任何符合條件的標準,這就是作者使用EXISTS子句的原因,那麼將顯示該信息。也就是說,我正在顯示具有多個電話號碼的部門名稱以及他們的電話號碼。 現在我可以看到。謝謝。我仍然在學習如何很好地閱讀查詢。 – krebshack

1

如果存在一個或多個具有不同電話號碼的同等部門,您正在選擇全部E1

+0

這樣做更有意義。謝謝。 – krebshack