我试图从我的表中检索'nemesis'列表。MYSQL - 从一个组中检索最大计数kill(每个受害者一行)
表球员:
CREATE TABLE IF NOT EXISTS stats_players (
idPlayerSteam BIGINT UNSIGNED PRIMARY KEY,
name VARCHAR(255))
表事件:
CREATE TABLE IF NOT EXISTS stats_events (
idEvent INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
idPlayerSteam BIGINT UNSIGNED,
type VARCHAR(50),
dateOccurs DATETIME,
idPlayerSteamVictim BIGINT UNSIGNED)
数据:
INSERT INTO stats_players (idPlayerSteam, name) VALUES
(1,'bob'), (2,'tom'),(3,'robby'),(4,'dany'),(5,'john');
INSERT INTO stats_events (idPlayerSteam,type,dateOccurs,idPlayerSteamVictim) VALUES
(1,'PVP','2016-05-05 12:12:12',3),
(1,'PVP','2016-05-05 12:15:12',3),
(1,'PVP','2016-05-05 12:16:12',3),
(1,'PVP','2016-05-05 12:17:12',3),
(2,'PVP','2016-05-05 13:12:12',3),
(2,'PVP','2016-05-05 12:19:12',3),
(2,'PVP','2016-05-05 12:20:12',3),
(3,'PVP','2016-05-06 12:12:12',2),
(3,'PVP','2016-05-06 12:12:12',1),
(4,'PVP','2016-05-06 12:12:12',5),
(4,'PVP','2016-05-06 12:12:12',5),
(4,'PVP','2016-05-06 12:12:12',5);
我要找回什么:
- 的一个对方球员
- 的每个球员的“克星”的“克星”,我指的是与记录针对杀敌次数最多的对手玩家
最近的请求,我可以得到:
SELECT v.idPlayerSteam,v.name as victim,k.idPlayerSteam,k.name as killer, count(*)
FROM stats_players v
LEFT OUTER JOIN stats_events e ON v.idPlayerSteam = e.idPlayerSteamVictim
LEFT OUTER JOIN stats_players k ON e.idPlayerSteam = k.idPlayerSteam
WHERE e.type='PVP'
GROUP BY v.idPlayerSteam,k.idPlayerSteam
HAVING COUNT(*) > 2
ORDER BY v.idPlayerSteam, COUNT(*) DESC
它几乎工程,但我可以得到每个受害者只有一行(在必杀计第一个)
我知道我可以使用子请求,但我想不出如何.. :(
发表您的电流输出和期望的一个 – Rahul
你在这里一半,但看到http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very -simple-sql-query – Strawberry
另外,我认为你的问题应该是*“每个玩家的'克星',我的意思是对该玩家记录的杀人数最高的对手”* – Strawberry