我有一个 USER
表,它有 userId
和 point
字段。在运行时,我想知道特定用户基于他们的观点的排名是多少。实现此目的的最佳方法是什么:
1:查询所有用户到一个列表中。根据点对列表进行排序并进行二进制搜索以查找该用户的排名。这听起来像是个坏主意。
2:是否可以通过创建数据库查询来完成这些任务?
我预计有 2000-5000 个用户。
最佳答案
SET @rownum := 0;
SELECT rank, userId, point
FROM (
SELECT @rownum := @rownum + 1 AS rank, userId, point
FROM user ORDER BY point DESC
)
as result WHERE userId = xxxxxxxx
关于database - 什么是排名系统的好设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4391190/