mysql group_concat里面有一个计数?

我有2个表,用户并遵循。下表后面有一个名为状态的列。我想根据状态对每个用户进行分组的次数进行计数。

下面的查询返回每个用户的每种状态类型的记录。

SELECT users.name as user_name, f.status, count(f.id) 

FROM users

JOIN application_follows f ON f.user_id = users.id

GROUP BY users.id, f.status

ORDER BY users.id

返回类似:

user_name     status     count

mike new 10

mike old 5

tom new 8

tom old 9

但我想要更友好的东西:

user_name     status_count

mike new,10|old,5

tom new,8|old,9

尝试使用group_concat和计数,但没有用。有什么线索吗?

回答:

您需要使用GROUP BY两次,首先从下面的(user_id,status)开始获取计数,然后从连接的表到concat的user_id:

SELECT users.name, GROUP_CONCAT( CONCAT(f.status, ',', f.cnt) SEPARATOR '|' )

FROM users

JOIN

( SELECT user_id, status, count(id) AS cnt

FROM application_follows

GROUP BY user_id, status ) f

ON f.user_id = users.id

GROUP BY users.id

以上是 mysql group_concat里面有一个计数? 的全部内容, 来源链接: utcz.com/qa/410500.html

回到顶部