我正在尝试根据游戏中的杀戮次数创建排行榜,其中显示了排名前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
SELECT * FROM
WHERE
= 'map1' ORDER BY
DESC
但我需要将返回的行数限制为仅所需的数量top 5 ranks,而不是所有行的数量。
top 5 ranks
试试这个查询:
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