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” (count of items that belong to each company), 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?
Advertisement
Answer
You need to COUNT()
with GROUP BY
in an inner SELECT
clause 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.