这是我的 table :
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;
但是我得到一个错误:
Error Number: 1111
Invalid use of group function
我有一种感觉COUNT
, MAX
, MIN
或 SUM
不能用于 GROUP_CONCAT
.如果是这样,您知道另一种方法吗?
最佳答案
您需要先在内部 SELECT
子句中使用 GROUP BY
COUNT()
,然后再应用 GROUP_CONCAT()
;
SELECT GROUP_CONCAT(cnt) cnt
FROM (
SELECT COUNT(*) cnt
FROM table1
GROUP BY fk_company
) q;
输出:
| CNT | ----------- | 3,2,3,1 |
这里是 SQLFiddle 演示。
关于mysql - 在 GROUP_CONCAT 中使用 COUNT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17463171/