计算group_concat结果

时间:2015-06-08 11:49:51

标签: mysql

这个问题与mysql group_concat with a count inside?非常相似,但我无法解决如何解决问题的方法。

我有这个问题:

SELECT 
    printer AS `Copieur/Imprimante`, 
    GROUP_CONCAT(DISTINCT groupname SEPARATOR "\r\n") AS `Groupes`,
FROM `assoc` 
WHERE groupname 
    IN (SELECT * FROM wanted_groups) 
GROUP BY printer;

这给了我这个:

SQL results

我想添加每个打印机组的计数,有点像

\\simp\DSI - Canon iR C4580 PCL6    |   DSI-ECRITURE (20)
                                    |   DPDSI-ECRITURE (3)
...

希望我的问题足够清楚 感谢

1 个答案:

答案 0 :(得分:1)

您可以通过预先聚合数据来获取计数,然后再次聚合以将结果放入所需格式中,从而实现您想要的目标:

SELECT printer AS `Copieur/Imprimante`, 
       GROUP_CONCAT(groupname, ' (', cnt, ')' SEPARATOR '\r\n') AS `Groupes`
FROM (SELECT printer, groupname, COUNT(*) as cnt
      FROM `assoc`
     WHERE groupname IN (SELECT * FROM wanted_groups) 
      GROUP BY printer, groupname
     ) a 
GROUP BY printer;