【问题标题】:CONCAT() inside GROUP_CONCAT() with countGROUP_CONCAT() 内的 CONCAT() 计数
【发布时间】:2019-06-14 04:36:11
【问题描述】:

我试图在 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() 函数在以这种方式使用时会导致一些问题。

期望的输出

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

感谢您的帮助。

【问题讨论】:

标签: mysql sql concat group-concat


【解决方案1】:

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

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

【讨论】:

  • @Pandurang 注意默认的最大 GROUP_CONCAT 长度为 1024,就像手册中提到的那样。在将来当表变大或添加了更多状态组。
猜你喜欢
  • 1970-01-01
  • 2021-11-24
  • 2011-11-23
  • 1970-01-01
  • 2018-09-04
  • 2019-01-09
  • 2011-06-24
  • 2012-09-21
  • 2012-11-07
相关资源
最近更新 更多