计算 2 列的发生次数
Count 2 columns for occurrence
所以基本上,我需要一个查询来 return 显示名称、杀戮数量和死亡数量。
我有两个 table 需要从中提取。
两个table是
player
id | name
2334324 | user
4353454 | user2
其中 id
是他们的唯一标识符,name
是他们的显示名称。
第二个table是:
player_kill
id | killer | victim |
1 | 2334324 | 4353454 |
2 | 2334324 | 4353454 |
3 | 4353454 | 2334324 |
其中 killer
/ victim
列包含 player
table.
的唯一标识符
我希望能够计算 killer
和 victim
中玩家 ID 的出现次数,以便查询 returns:
name | kills | deaths
user | 2 | 1
user2| 1 | 2
其中,击杀数不足的是 playerid
在 killer
列中出现的次数,死亡人数也是如此
希望我提供了足够的信息。
我目前拥有的:
SELECT `player`.`name`, COUNT(DISTINCT `player_kill`.`id`) as `kills`, COUNT(DISTINCT `player_kill`.`id`) as `deaths`
FROM `player`
LEFT JOIN `player_kill` ON `player`.`id`=`player_kill`.`killer`
LEFT JOIN `player_kill` ON `player`.`id`=`player_kill`.`victim`
WHERE `player`.`id` = `player_kill`.`killer` AND `player`.`id` = `player_kill`.`victim`
GROUP BY `player`.`id`;
尝试
SELECT
p.name,
count(distinct pk1.id) as kills,
count(distinct pk2.id) as deaths
FROM player p
LEFT JOIN player_kill pk1 ON pk1.killer = p.id
LEFT JOIN player_kill pk2 ON pk2.victim = p.id
group by p.name
看看这是否有效:
SELECT `player`.`name`,
COUNT(DISTINCT k.`id`) as `kills`,
COUNT(DISTINCT v.`id`) as `deaths`
FROM `player`
LEFT JOIN `player_kill` AS k ON `player`.`id` = k.`killer`
LEFT JOIN `player_kill` AS v ON `player`.`id` = v.`victim`
GROUP BY `player`.`id`;
如果没有,那么我们可能需要将 COUNT 做成子查询。
所以基本上,我需要一个查询来 return 显示名称、杀戮数量和死亡数量。
我有两个 table 需要从中提取。
两个table是
player
id | name
2334324 | user
4353454 | user2
其中 id
是他们的唯一标识符,name
是他们的显示名称。
第二个table是:
player_kill
id | killer | victim |
1 | 2334324 | 4353454 |
2 | 2334324 | 4353454 |
3 | 4353454 | 2334324 |
其中 killer
/ victim
列包含 player
table.
我希望能够计算 killer
和 victim
中玩家 ID 的出现次数,以便查询 returns:
name | kills | deaths
user | 2 | 1
user2| 1 | 2
其中,击杀数不足的是 playerid
在 killer
列中出现的次数,死亡人数也是如此
希望我提供了足够的信息。
我目前拥有的:
SELECT `player`.`name`, COUNT(DISTINCT `player_kill`.`id`) as `kills`, COUNT(DISTINCT `player_kill`.`id`) as `deaths`
FROM `player`
LEFT JOIN `player_kill` ON `player`.`id`=`player_kill`.`killer`
LEFT JOIN `player_kill` ON `player`.`id`=`player_kill`.`victim`
WHERE `player`.`id` = `player_kill`.`killer` AND `player`.`id` = `player_kill`.`victim`
GROUP BY `player`.`id`;
尝试
SELECT
p.name,
count(distinct pk1.id) as kills,
count(distinct pk2.id) as deaths
FROM player p
LEFT JOIN player_kill pk1 ON pk1.killer = p.id
LEFT JOIN player_kill pk2 ON pk2.victim = p.id
group by p.name
看看这是否有效:
SELECT `player`.`name`,
COUNT(DISTINCT k.`id`) as `kills`,
COUNT(DISTINCT v.`id`) as `deaths`
FROM `player`
LEFT JOIN `player_kill` AS k ON `player`.`id` = k.`killer`
LEFT JOIN `player_kill` AS v ON `player`.`id` = v.`victim`
GROUP BY `player`.`id`;
如果没有,那么我们可能需要将 COUNT 做成子查询。