我读了很多关于这个问题的话题,但我找不到解决方案.
我有一个表(称为用户)与我的网站的用户.他们有积分.例如:
+-----------+------------+
| 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)