首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql group_concat里面有计数吗?

mysql group_concat里面有计数吗?
EN

Stack Overflow用户
提问于 2012-03-30 06:16:04
回答 2查看 11.6K关注 0票数 7

我有2个表,用户和跟随者。下面的表有一个名为status的列。我想统计一下每个用户有多少关注者按状态分组。

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

代码语言:javascript
复制
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

返回类似以下内容:

代码语言:javascript
复制
user_name     status     count

mike          new         10
mike          old         5
tom           new         8
tom           old         9

但我想要一些更友好的东西,比如:

代码语言:javascript
复制
user_name     status_count

mike          new,10|old,5
tom           new,8|old,9

尝试使用group_concat和count,但不起作用。有什么线索吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-30 06:30:09

您需要使用GROUP BY两次,第一次是从下面的( user_id,status)获取计数,然后是从joined到concat的user_id:

代码语言:javascript
复制
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
票数 14
EN

Stack Overflow用户

发布于 2012-03-30 06:33:28

我不知道完整的表定义,所以我创建了查询,它只使用user_name、status和count。

代码语言:javascript
复制
SELECT user_name, GROUP_CONCAT(CONCAT(status, ',', count) SEPARATOR '|')  FROM users GROUP BY user_name ORDER BY user_name;
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9934361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档