MySQL, Get users rank

后端 未结 3 1992
余生分开走
余生分开走 2020-11-28 12:39

I have a mysql table like below:

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

3条回答
  •  刺人心
    刺人心 (楼主)
    2020-11-28 12:44

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

    Dense rank:

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

提交回复
热议问题