2013-05-14 89 views
1

有一張名爲Employee的表,它上面有employee_id,manager_id,salary列。我的查詢是這個查詢是什麼意思?

select employee_id,salary,last_name from employees M 
WHERE EXISTS 
(SELECT employee_id FROM employees W 
WHERE (W.manager_id = M.employee_id) AND W.SALARY>10000) 
order by employee_id asc 

這個查詢是什麼意思?

a)所有經理人的薪水大於10000

b)院至少有一名員工做大於10000

+0

好像[相關子查詢(http://en.wikipedia.org/wiki/Correlated_subquery) – Habib 2013-05-14 12:20:14

+0

這意味着你需要學習一些SQL而不是要求我爲他做的問題! – skuntsel 2013-05-14 12:20:39

+1

選項** B **對於此查詢是正確的。 – 2013-05-14 12:21:30

回答

2

如果一個子查詢返回任何行,所有所有的管理者,EXISTS子查詢TRUE,和NOT EXISTS子查詢是FALSE。例如:

SELECT column1 FROM t1 WHERE EXISTS (SELECT * FROM t2); 

傳統上,EXISTS子查詢與SELECT *啓動,但它可能與SELECT 5SELECT column1或任何東西開始。 MySQL ignores the SELECT list in such a subquery,所以它沒有區別。

在你的情況下,選項B是正確的。

0

這似乎就意味着所有管理者與至少一個員工年收入超過10000 它很難沒有看到實際的表等

想想這樣說:

員工W具有MANAGER_ID =僱員M的EMPLOYEE_ID,它爲W如何賺取超過10000

所以,M是經理,W是員工和W收入超過10000

0

二)說:g給我所有的M(anagers),其中(至少一個)W(orker)(在他們下面)工資大於10k。

0

我不知道在stackoverflow中問的問題的類型。

所以在這裏我打斷你的查詢

SELECT employee_id FROM employees W 
WHERE (W.manager_id = M.employee_id) AND W.SALARY>10000 

上面的查詢是尋找在你的員工表,其工資管理超過10000

後,你有存在的查詢select employee_id,salary,last_name from employees M得到經理誰是您的員工,並且是以前的選擇查詢中的工資標準。

總之你會得到經理的細節誰是年收入超過10000