2012-12-19 31 views
3

我有2個表格,用戶和關注。表格後面有一個名爲status的列。我想指出每個用戶按照狀態分組的次數。MySQL的行與列group_concat和計數?

以下查詢返回每個用戶的每種狀態類型的記錄。

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和計數,但沒有工作嘗試。任何線索?

回答

0
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 

+0

這是爲我工作。 非常感謝。 – user1736363