我有一个表格,用于存储用户给出的评级。
例如:
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编写查询吗?
答案 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。