我正在尝试在MySQL中使用group_concat,concat和count函数获得结果,但它给了我错误。 这是我的桌子
首先,当我尝试通过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
感谢您的帮助。
答案 0 :(得分:3)
您不能嵌套聚合函数(count()
的参数中包含group_conat()
)。一种解决方案是从嵌套子查询中进行选择。
SELECT group_concat(status, ':', count SEPARATOR ',') rowstring
FROM (SELECT status,
count(*) count
FROM mytable
GROUP BY status) x;