2013-02-13 27 views
2

我該如何建立一個查詢來執行以下操作?試圖用計數和組建立mysql查詢

  1. 分組由PHONENUMBER
  2. 如果該分組擁有5種不同的名字

數據字段: ID,PHONENUMBER,名

我已經試過:

SELECT count(phonenumber), phonenumber, GROUP_CONCAT(name) 
FROM list 
group by phonenumber 
having count(phonenumber) > 5 

但它超時,所以不知道這是否是正確的格式。

假數據:

id | phonenumber | name 
1 | 555-5555 | joe 
2 | 444-4444 | joe 
3 | 555-5555 | joe 
4 | 555-5555 | dan 
5 | 555-5555 | Ben 
6 | 555-5555 | Griff 
7 | 555-5555 | Sam 
8 | 555-5555 | Jim 

所需的輸出:

count(phonenumber | phonenumber | GROUP 
7     | 555-5555 | joe, dan, Ben, Griff, Sam, Jim 
+0

歡迎來到StackOverflow!提供您的表格定義,樣本數據和期望的輸出以及您到目前爲止的內容,以便我們看到您的努力,而不會猜測您希望我們爲您提供什麼幫助。 – peterm 2013-02-13 21:22:28

+3

謝謝 - 將填補這一點,我欣賞關於什麼我需要發佈的信息。謝謝! – user2069972 2013-02-13 21:23:56

+1

示例數據和所需的輸出... – peterm 2013-02-13 21:28:01

回答

1

它看起來像你的查詢工作就好了。這裏是sqlfiddle

如果你需要得到的只有DISTINCT的名字,那麼你可以做這樣的

SELECT COUNT(phonenumber) AS `count`, 
     phonenumber, 
     GROUP_CONCAT(DISTINCT name) AS `names` 
    FROM `list` 
GROUP BY phonenumber 
HAVING COUNT(phonenumber) > 5 

這裏是sqlfiddle了點。

+2

謝謝!緩慢的分貝似乎是給我超時的問題。感謝sqlfiddle鏈接!從未見過那個網站。 – user2069972 2013-02-13 21:41:57

+0

@ user2069972確保您爲通常查詢的列定義了索引。這會提高你的數據庫性能。 – mawburn 2013-02-13 21:50:31

+0

@ user2069972你很受歡迎。快樂的編碼。並感謝您在提高您的問題方面非常合規和快捷。 – peterm 2013-02-13 22:09:33