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

以下を使用して、1つの列の一般的な値を取得できます。しかし、どうすればすべての列に共通の値を取得できますか?

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

1 に答える 1

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
于 2012-08-28T14:13:41.853 に答える