Using COUNT in GROUP_CONCAT

末鹿安然 提交于 2019-12-21 08:21:35

问题


This is my table:

id    fk_company
1          2    
2          2    
3          2    
4          4    
5          4    
6          11   
7          11   
8          11   
9          12

The result i want should be string "3, 2, 3, 1" because this is just part of my complex query string.

I tried to use this query:

SELECT GROUP_CONCAT(COUNT(id) SEPARATOR ", ")
FROM `table` GROUP BY fk_company;

But I got an error:

Error Number: 1111

Invalid use of group function

I have a feeling COUNT, MAX, MIN or SUM can't be used in GROUP_CONCAT. If so, do you know another way to do this.


回答1:


You need to COUNT() with GROUP BY in an inner select first and then apply GROUP_CONCAT()

SELECT GROUP_CONCAT(cnt) cnt
  FROM
(
  SELECT COUNT(*) cnt
    FROM table1
   GROUP BY fk_company
) q

Output:

|     CNT |
-----------
| 3,2,3,1 |

Here is SQLFiddle demo




回答2:


select GROUP_CONCAT(counts) 
   from (
      select count(id) counts from
          table group by fk_company
   );



回答3:


SELECT A,  
GROUP_CONCAT(B SEPARATOR '/') AS 'Category',  
GROUP_CONCAT(C SEPARATOR '/') AS 'ALIAS_NAME',COUNT('ALIAS_NAME') AS 'Count'  
FROM carnews  
...  
...
GROUP BY 1
ORDER BY 4 DESC  

This works well in my case.



来源:https://stackoverflow.com/questions/17463171/using-count-in-group-concat

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!