获得MySQL的用户排名

Jor*_*rdy 9 mysql ranking

我读了很多关于这个问题的话题,但我找不到解决方案.

我有一个表(称为用户)与我的网站的用户.他们有积分.例如:

+-----------+------------+
| User_id   | Points     |
+-----------+------------+
| 1         | 12258      |
| 2         | 112        |
| 3         | 9678       |
| 4         | 689206     |
| 5         | 1868       |
+-----------+------------+
Run Code Online (Sandbox Code Playgroud)

在页面顶部设置变量$ user_id.例如,user_id是4.现在我想通过点获得用户的等级(如果user_id是4,则输出应为1).

非常感谢你!

And*_*ius 13

SELECT 
    COUNT(*) AS rank 
FROM users 
WHERE Points>=(SELECT Points FROM users WHERE User_id=4)
Run Code Online (Sandbox Code Playgroud)

更新了一些更有用的东西:

SELECT 
    user_id, 
    points, 
    (SELECT COUNT(*)+1 FROM users WHERE Points>x.points) AS rank_upper, 
    (SELECT COUNT(*) FROM users WHERE Points>=x.points) AS rank_lower 
FROM 
    `users` x 
WHERE x.user_id = 4
Run Code Online (Sandbox Code Playgroud)

其中包括用户所在的排名范围.因此,例如,如果前五个位置的分数是5 4 3 3 3,结果将是:

id points rank_upper rank_lower
id 5      1          1
id 4      2          2
id 3      3          5
id 3      3          5
id 3      3          5
Run Code Online (Sandbox Code Playgroud)