尝试使用计数和分组来构建mysql查询

时间:2013-02-13 21:19:08

标签: php mysql sql count group-by

如何构建查询以执行以下操作?

  1. 按照phonenumber分组
  2. 该分组有超过5个不同的名称
  3. 数据字段: id,phonenumber,name

    我试过了:

    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
    

1 个答案:

答案 0 :(得分: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