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 countmike new 10
mike old 5
tom new 8
tom old 9
但我想要更友好的东西:
user_name status_countmike 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