在GROUP_CONCAT中使用COUNT

时间:2013-07-04 06:21:26

标签: mysql sql count group-concat

这是我的表:

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

我想要的结果应该是字符串“3,2,3,1”,因为这只是我的复杂查询字符串的一部分。

我尝试使用此查询:

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

但我收到了一个错误:

错误号码:1111

无效使用群组功能

我感觉COUNT,MAX,MIN或SUM不能在GROUP_CONCAT中使用。如果是这样,你知道另一种方法吗?

5 个答案:

答案 0 :(得分:13)

首先需要在内部选择中COUNT() GROUP BY,然后应用GROUP_CONCAT()

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

输出:

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

这是 SQLFiddle 演示

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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  

这对我来说很好。

答案 3 :(得分:0)

只需使用 count(id)

SELECT id, COUNT(id) as total
FROM `table` GROUP BY fk_company;

答案 4 :(得分:0)

您还可以通过计算GROUP_CONCAT中的逗号(或分隔符)的数量来实现这一点:

SELECT (LENGTH(GROUP_CONCAT(DISTINCT fk_company))-LENGTH(REPLACE(GROUP_CONCAT(DISTINCT fk_company), ',', '')))
FROM `table`
GROUP BY fk_company