如何生成查询以执行以下操作?
按电话号码分组
其中该组有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/