我有一张桌子,看起来像下面
pid server time day
89663 185.x.x.55:27015 463 2015-01-20
89684 185.x.x.55:27015 29 2015-01-20
61102 185.x.x.55:27015 309 2015-01-20
5748 185.x.x.55:27015 684 2015-01-20
317 79.x.x.40:27018 2410 2015-01-20
54499 79.x.x.40:27018 12921 2015-01-20
27176 80.x.x.12:27019 6711 2015-01-20
81564 80.x.x.12:27019 1095 2015-01-20
25628 185.x.x.55:27015 161 2015-01-20
PID是玩家ID,时间以秒为单位
我想查询一个显示每个服务器的前5名玩家花费多少时间的查询。我写了一个查询来做到这一点:
SELECT `name`, `time`
FROM (
SELECT `pid`, SUM(`time`) AS `time`
FROM `stats_general`
WHERE `server` = '{$ip}'
AND `day` LIKE CONCAT(DATE_FORMAT(NOW(),'%Y-%m-'),'%')
GROUP BY `pid`
ORDER BY `time` DESC
LIMIT 0,5
) AS g
JOIN `stats_players` AS p ON g.pid = p.id
不幸的是,该查询具有不利的一面。它仅显示一台服务器的前5名。我想查询以显示每台服务器的前5名(我不想使用UNION,这会导致脚本执行很长时间。
加起来。我想要一个查询,该查询将显示每台服务器的前5名(本月在服务器上花费的时间)。
最佳答案
将查询嵌套在另一个获取IP地址的查询中;
SELECT `server` FROM `stats_general` WHERE 1 GROUP BY `server`
关于mysql - 获取每个“组”的前5条记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28055707/