MySQL,获得用户排名

Rai*_*Son 10 mysql sql rank

我有一个像下面这样的mysql表:

id     name     points
1      john     4635
3      tom      7364
4      bob      234
6      harry    9857
Run Code Online (Sandbox Code Playgroud)

我基本上想要在不选择所有用户的情况下获得个人用户排名.我只想按id选择一个用户,并获得用户排名,这取决于他们拥有的点数.

例如,通过id 3选择等级2来获取tom.

干杯

EEF

Qua*_*noi 18

SELECT  uo.*, 
        (
        SELECT  COUNT(*)
        FROM    users ui
        WHERE   (ui.points, ui.id) >= (uo.points, uo.id)
        ) AS rank
FROM    users uo
WHERE   id = @id
Run Code Online (Sandbox Code Playgroud)

密集等级:

SELECT  uo.*, 
        (
        SELECT  COUNT(DISTINCT ui.points)
        FROM    users ui
        WHERE   ui.points >= uo.points
        ) AS rank
FROM    users uo
WHERE   id = @id
Run Code Online (Sandbox Code Playgroud)

  • @Barmar:如果有联系,这将使用`id`作为次要标准. (2认同)