如何生成查询以执行以下操作?
按电话号码分组
其中该组有5个以上不同的名称
数据字段:
身份证,电话号码,姓名
我试过:

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

最佳答案

看起来你的查询工作得很好。这里是sqlfiddle
如果您只需要获得DISTINCT名称,那么您可以这样做

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

这里是sqlfiddle的。

关于php - 试图建立与计数和分组依据的MySQL查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14863341/

10-11 08:57