admin

MySQL将记录数限制为一列中的5个唯一值

sql

我正在尝试根据游戏中的杀戮次数创建排行榜,其中显示了排名前5位的玩家(杀戮次数相同的人排名相同)。

我如何获取所有记录直到排名5(所有记录直到一列(杀死)中最多5个唯一值)。

我希望这是有道理的。

查询还将需要考虑地图。例如:WHERE map =’map_name’

例如:

桌子:

Name, Map, Kills
user0 - map2 - 30
user1 - map1 - 30
user2 - map1 - 27
user3 - map1 - 54
user4 - map1 - 34
user5 - map1 - 34
user6 - map1 - 27
user7 - map1 - 22
user8 - map1 - 22
user9 - map1 - 31
user10 - map1 - 21
user11 - map1 - 27
user12 - map2 - 34

需要的结果(地图名称为map1的前5名中的所有玩家/记录):

1. user3 - 54
2. user4 - 34
   user5 - 34
3. user9 - 31
4. user1 - 30
5. user2 - 27
   user6 - 27
   user11 - 27

到目前为止,我有:SELECT * FROM记录WHERE地图= 'map1' ORDER BY杀死DESC

但我需要将返回的行数限制为仅所需的数量top 5 ranks,而不是所有行的数量。


阅读 168

收藏
2021-07-01

共1个答案

admin

试试这个查询:

     SELECT * FROM records WHERE 
    map = 'map1' and  kills in (SELECT * FROM 
(select Kills from records  where map = 'map1' group by Kills order by kills desc limit 0,5) 
as x)  order by Kills desc

SQLFIDDLE

2021-07-01