我有一张table user_points
它包含了用户的积分,我正试图根据积分计算排名。它是正常工作的所有用户除了用户有1分。
如果用户有一个点,它显示它的排名为0,但它应该显示它的排名为最后或在最后的数字,如:12083等。
分数越高,排名也应该越高。例如:
1000分=排名1
1分=排名1223
下面是查询。
SELECT id, mobileNo, points,
FIND_IN_SET( points, (SELECT GROUP_CONCAT( points ORDER BY points DESC )
FROM users_points )) AS rank
FROM users_points
WHERE mobileNo = '03214701777'
我应该改变什么来修复它?
1条答案
按热度按时间wj8zmpe11#
似乎就是你要找的。虽然它仍然非常无效,但它比使用find\u in\u set()的方法要好。如果您真的想使用find \u in \u set(),那么您需要将分数填充到一个一致的宽度,然后除以宽度+1得到排名。