这是我的表:
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中使用。如果是这样,你知道另一种方法吗?
答案 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