CONCAT() inside GROUP_CONCAT() with count

CONCAT() inside GROUP_CONCAT() with count

我正在尝试使用 group_concat、MySQL 中的 concat 和 count 函数获取结果,但它给了我错误。 这是我的 table

首先,当我尝试使用 concat 获取计数和状态时,它工作正常。

$query="SELECT CONCAT(`status`,':',count(status)) FROM `mytable` GROUP BY status"

输出:
Hold:2
Completed:3
Cancelled:2

到这里为止一切都很好。现在我想把这个输出排成一行。所以我尝试使用 GROUP_CONCAT().

$query="SELECT GROUP_CONCAT(CONCAT(`status`,':',count(status)) SEPARATOR ',') as rowString FROM `mytable` GROUP BY status"

但现在它给我错误 " 组函数的使用无效"

注意: 如果我将 count(status) 替换为 table 中的其他字段(没有计数),则相同的查询有效。 count() 函数在以这种方式使用时会导致一些问题。

期望输出

Hold:2,Completed:3,Cancelled:2

感谢您的帮助。

您不能嵌套聚合函数(count()group_conat() 的参数中)。一种解决方案是从嵌套子查询 select。

SELECT group_concat(status, ':', count SEPARATOR ',') rowstring
       FROM (SELECT status,
                    count(*) count
                    FROM mytable
                    GROUP BY status) x;