2012-08-28 155 views
2

我想獲取mySQL表中所有列的最常見值。獲取所有列的最常見值

[id] [UserID]   [UserID2] 
1  johnnietheblack  marywhite 
2  johnnietheblack  marywhite 
3  dannyrottenegg  dannyrottenegg  
4  marywhite   marywhite 
5  marywhite   johnnietheblack  
6  johnnietheblack  marywhite 

這是我想要的輸出:

[id] [UserID]   [Count] 
    1  johnnietheblack  4 
    2  dannyrottenegg  2 
    3  marywhite   6 

我可以使用以下方法來獲得共同的價值觀一列。但我怎樣才能得到所有列的共同價值觀?

SELECT COUNT(*) AS `Rows`, UserID 
FROM table-name 
GROUP BY UserID 
ORDER BY `Rows` DESC 
+0

我不太清楚,你能解釋一下有什麼不同?你期望展示什麼? – jcho360

+0

查看輸出示例。 – Floppy88

回答

2
SELECT UserID, COUNT(*) FROM 
(SELECT UserID FROM tablename 
UNION ALL 
SELECT UserID2 FROM tablename) t 
GROUP BY UserID 

我不包括id列,因爲它似乎並沒有與價值觀相關。

如果你想看到所有的ID的每個名稱,你可以使用GROUP_CONCAT:

SELECT GROUP_CONCAT(id), UserID, COUNT(*) FROM 
(SELECT id, UserID FROM tablename 
UNION ALL 
SELECT id, UserID2 FROM tablename) t 
GROUP BY UserID 
+0

_Error:對不起,每個派生表都必須有自己的別名_ – Floppy88

+1

@WeContest。固定。 –

+0

謝謝,現在它工作。我在_COUNT_之前嘗試添加ID列,但它返回一個錯誤。我應該把它放在哪裏? – Floppy88