GROUP_CONCAT()中的CONCAT()计数

时间:2019-01-20 17:17:17

标签: mysql sql concat group-concat

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

enter image description here

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

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

输出:
按住:2
已完成:3个
已取消:2

到这里都很好。现在,我希望此输出成一行。所以我尝试使用GROUP_CONCAT()。

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

但是现在它给了我错误“组功能的无效使用”

注意:如果我将count(status)替换为表中的其他字段(不包括count),则可以使用相同的查询。以这种方式使用时,count()函数会引起一些问题。

所需的输出

保持:2,已完成:3,已取消:2

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

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

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