mysql数据库的简单排行榜

8fsztsew  于 2021-08-01  发布在  Java
关注(0)|答案(1)|浏览(359)

我正在做一个简单的游戏,我想做一个迷你排行榜,用户可以查看。排行榜将包括用户,5名球员在他以上的总积分,和5名球员在他以下的总积分。如何通过mysql查询返回这些用户?
例如:在下表中,当用户的id为8时,我想返回lea、joshua、pete(因为在本例中没有5个在他之上)、john、bert、maxi、max、anna的玩家(以及他们的点数)。

id| name |   points
1   Max       20
2   anna      10
3   bert      30
4   maxi      30
5   lea       100
6   lei       10
7   joshua    90
8   Pete      50
9   John      40
cgfeq70w

cgfeq70w1#

如果您运行的是mysql 8.0,那么可以使用 row_number() 以及一个常用的表表达式:

with cte as (
    select t.*, row_number() over(order by points) rn
    from mytable t
)
select c.id, c.name, c.points
from cte c
inner join (select rn from cte where id = 8) r
    on c.rn between r.rn - 5 and r.rn + 5

相关问题