选择具有最高评级的用户

时间:2013-02-06 13:03:52

标签: mysql doctrine-orm symfony-2.1

我有一个表格,用于存储用户给出的评级。

例如:

UserId  Rating
 3            1  
 3            2
 1            1
 1            2
 1            3
 1            4
 2            1
 2            23
 2            4

我需要检索已评分最多次数的10位用户。

例如:

 1 rated 4 times
 2 rated 3 times
 3 rated 2 times...

知道如何使用mysql编写查询吗?

1 个答案:

答案 0 :(得分:2)

您必须按用户ID分组,计算分组的行数,然后按降序排序,然后将查询限制为10行:

SELECT userID, count(*) times
FROM users
GROUP BY userID
ORDER BY times DESC
LIMIT 10

如果您需要完全如上所示的输出,请尝试:

SELECT CONCAT_WS(' ', userID, 'rated', count(*), 'times')
FROM users
GROUP BY userID
ORDER BY count(*) DESC
LIMIT 10

请参阅this fiddle