我有2个表,用户和跟随者。下面的表有一个名为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返回类似以下内容:
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和count,但不起作用。有什么线索吗?
发布于 2012-03-30 06:30:09
您需要使用GROUP BY两次,第一次是从下面的( user_id,status)获取计数,然后是从joined到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发布于 2012-03-30 06:33:28
我不知道完整的表定义,所以我创建了查询,它只使用user_name、status和count。
SELECT user_name, GROUP_CONCAT(CONCAT(status, ',', count) SEPARATOR '|') FROM users GROUP BY user_name ORDER BY user_name;https://stackoverflow.com/questions/9934361
复制相似问题