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

标签 mysql sql pdo limit

我正在尝试根据游戏中的击杀数创建排行榜,其中显示排名前 5 位的玩家(击杀数相同的人处于同一等级)。

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

我希望这是有道理的。

查询还需要考虑 map 。例如: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

需要的结果( map 名称为 map1 的前 5 名玩家/记录):

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

到目前为止我有:SELECT * FROMrecordsWHEREmap= 'map1' ORDER BYkillsDESC

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

最佳答案

试试这个查询:

     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

关于MySQL 将记录数限制为一列中的 5 个唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33449695/

相关文章:

PHP:当变量(b)包含文本时如何在另一个变量(b)中显示变量(a)

php - mysql 查询找到最高分并使用 DISTINCT

sql server而不是触发带有插入的变量和值的插入语句

Python迭代查询mysql

php - 数组到字符串的转换——关联数组

php - 如何以正确的顺序列出父类别和子类别数据

具有左连接和右连接的 MySQL 查询需要 15 分钟才能执行

java - 用户 'root' @'localhost' 的访问被拒绝(使用密码 : YES) IN WAMPSERVER

php - PDO 动态参数绑定(bind) where 子句 AND 日期之间

php - 不能为空 - PhP PDO 函数