我試圖從我的表中檢索'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