如何确定MySQL中某个关系存在多少次?

时间:2019-07-14 03:25:53

标签: mysql

我的表格设置如下:

killerId | killId 
1           | 4
1           | 4
2           | 1 
3           | 4
4           | 2
5           | 2
1           | 6

从本质上讲,这是一个killfeed,它显示谁在我正在开发的游戏中杀死了谁。

我希望能够生成一个查询,使我能够让玩家看到谁杀死了他们最多。

理想的响应是:

killerId | mostKilledId | timesKilled
1        | 4            | 2
2        | 1            | 1
3        | 4            | 1
4        | 2            | 2
5        | 2            | 2

对于我的用例,我需要查看所有玩家的列表以及他们的“克星”是谁(杀死他们最多的人)。

我有:

SELECT DISTINCT killerId, killedId, COUNT(*) FROM kills GROUP BY killerId, killedId;

哪个会给我以下答复:

killerId | killedId | count
1        | 4        | 2
2        | 1        | 1
3        | 4        | 1
4        | 2        | 1
5        | 2        | 1
1        | 5        | 1

我不想在这里看到重复的killerId,而宁愿只显示计数最高的killerId和KilledId。在上面的示例中,我不想看到最终的杀戮,因为它不高于ID为4的2个杀戮。

编辑:根据评论中的答案,我得到:

SELECT a.killerId, a.killedId, MAX(a.count) 
FROM (SELECT killerId, killedId, COUNT(*) as count FROM kills GROUP BY killerId, killedId) AS a 
INNER JOIN(SELECT killerId, killedId, MAX(count) count 
FROM (SELECT killerId, killedId, COUNT(*) as count FROM kills GROUP BY killerId, killedId) AS c 
GROUP BY c.killerId, c.killedId) AS b 
ON a.killerId = b.killerId AND a.killedId = b.killedId
GROUP BY a.killerId, a.killedId;

但是我仍然得到与之前相同的结果,而且我感觉好像我不了解这里正在发生什么/正确的前进方向是什么。

0 个答案:

没有答案