一尘不染

MySQL,获取用户排名

mysql

我有一个如下的mysql表:

id     name     points
1      john     4635
3      tom      7364
4      bob      234
6      harry    9857

我基本上想获得一个单独的用户等级,而不选择所有用户。我只想通过id选择一个用户,并获得用户排名,该排名取决于他们所获得的积分。

例如,以ID 3选择等级2返回tom。

干杯

ef


阅读 646

收藏
2020-05-17

共1个答案

一尘不染

SELECT  uo.*, 
        (
        SELECT  COUNT(*)
        FROM    users ui
        WHERE   (ui.points, ui.id) >= (uo.points, uo.id)
        ) AS rank
FROM    users uo
WHERE   id = @id

密集等级:

SELECT  uo.*, 
        (
        SELECT  COUNT(DISTINCT ui.points)
        FROM    users ui
        WHERE   ui.points >= uo.points
        ) AS rank
FROM    users uo
WHERE   id = @id
2020-05-17