2015-07-21 29 views
0

員工此查詢如何工作?我很困惑在1號線

=========================== 
| Employee ID | Salary | 
=========================== 
|  3   | 200  | 
|  4   | 800 | 
|  7   | 450 | 
============================ 

查詢:

SELECT * 
FROM Employee Emp1 
WHERE (1) = (   --Line1 
      SELECT COUNT(DISTINCT(Emp2.Salary)) 
      FROM Employee Emp2 
      WHERE Emp2.Salary > Emp1.Salary) 

上述查詢輸出第二高薪水的「僱員」表。 Line1如何工作?我不熟悉語法類型:

WHERE (1) = 
+0

如果第二次選擇的結果將等於1,那麼您從Employee Emp1中獲得所有記錄,否則不等於1,則您不會獲得任何數據 – Marusyk

+3

它只是倒退 - 這與「Where(Select Count(blah)」中的說法相同。 ..)= 1)'誰寫的可能也是'正確加入'。 – Siyual

+0

這沒什麼特別的。大括號可以是全部。 – Kasyx

回答

0

它可能會更有意義是這樣的:

SELECT * 
FROM Employee Emp1 
WHERE 
(SELECT COUNT(DISTINCT(Emp2.Salary)) 
    FROM Employee Emp2 
    WHERE Emp2.Salary > Emp1.Salary) 
= 1 

基本上就像你說的 - 第二高的薪水選擇所有員工。