我有2个表,用户和以下.table follow有一个名为status的列.我想计算每个用户按状态分组的次数.
下面的查询返回每个用户的每种状态类型的记录.
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
Run Code Online (Sandbox Code Playgroud)
返回类似于:
user_name status count
mike new 10
mike old 5
tom new 8
tom old 9
Run Code Online (Sandbox Code Playgroud)
但我想要一些更友好的东西:
user_name status_count
mike new,10|old,5
tom new,8|old,9
Run Code Online (Sandbox Code Playgroud)
尝试使用group_concat并计数但没有工作.有线索吗?
pio*_*trm 13
您需要使用GROUP BY两次,首先在(user_id,status)中从以下获取计数然后在user_id上从连接表到concat:
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
Run Code Online (Sandbox Code Playgroud)