2012-09-28 51 views
1

我有一個由員工的名字和經理的名字的一個非常基本的表:如何編寫只返回重複值的MySQL查詢,而不使用聚合函數?

CREATE TABLE Work (
Worker_name varchar(50) NOT NULL 
Manager_name varchar(50) NOT NULL; 

此表允許工人是他自己的經理,經理,負責多個工人等

我應該編寫一個查詢,以顯示管理至少2名不同員工的每位經理,但我無法使用聚合命令或GROUP BY。

如果有人能給我一個很棒的提示。我喜歡搞清楚這些事情,但這確實讓我難住了。

感謝, 安德魯

+0

您可以創建2個表並使用rdbms –

回答

1

這個查詢是有點乏味,但它應該做的,你需要什麼做的,或者至少讓你在正確的軌道:)

SELECT w1.* FROM Work w1 
    INNER JOIN Work w2 ON w2.Manager_name = w1.Manager_name AND w2.Worker_name != w1.Worker_name 
    INNER JOIN Work w3 ON w3.Manager_name = w1.Manager_name AND w3.Worker_name != w2.Worker_name 
    WHERE w1.Manager_name = w1.Worker_name 
+0

謝謝!我只結束了一次自我加入,但似乎正在工作。如果我問你是怎麼想的,你介意嗎?有些自我加入對我來說是非常不直觀的。在我完成的所有其他聯接中,我直接選擇了我想要的標準,而不是像我在此查詢中那樣「避免」它。 –

+0

不客氣!我在工作中做了大量的分析查詢,並且有很多時候我必須加入交易數據來確定順序事件,並且該過程包括將交易表加入到自身中,並抓取下一個順序不同的事件目前的事件。這恰好是我以前不得不做的事情,而且您的查詢的症狀似乎匹配:) – Bryan

0

你可以在請嘗試下面的SQL,它在mysql中運行良好,希望能幫到您。

從Work中選擇不同的Manager_name其中a.Manager_name在 (從Work b選擇Manager_name,其中a.Worker_name!= b.Worker_name);