mysql行到列,包含组\u concat和count?
我有两个表,用户和追随者。下表有一个名为status的列。我想计算每个用户按状态分组的跟踪次数 下面的查询返回每个用户的每个状态类型的记录mysql行到列,包含组\u concat和count?,mysql,count,group-concat,Mysql,Count,Group Concat,我有两个表,用户和追随者。下表有一个名为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_nam
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 new old
mike 10 5
tom 8 9
尝试使用group_concat和count,但不起作用。有什么线索吗
SELECT user_name,
MAX(CASE WHEN status = 'new' THEN totalFollowers ELSE NULL END) `NEW`,
MAX(CASE WHEN status = 'old' THEN totalFollowers ELSE NULL END) `OLD`
FROM
(
SELECT users.name as user_name,
f.status,
count(f.id) totalFollowers
FROM users
LEFT JOIN application_follows f
ON f.user_id = users.id
GROUP BY users.id, f.status
) derivedTable
GROUP BY user_name
或者可能(不确定这一点)
SELECT users.name as user_name,
MAX(CASE WHEN f.status = 'new' THEN count(f.id) ELSE NULL END) `NEW`,
MAX(CASE WHEN f.status = 'old' THEN count(f.id) ELSE NULL END) `OLD`
FROM users
LEFT JOIN application_follows f
ON f.user_id = users.id
GROUP BY users.id, f.status