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;
我正在尝试使用 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;