我有一个相对简单的问题,但我仍然坚持编写一个正确的SQL查询来显示我需要的结果。我有一个表来存储匹配的结果,其中列表示参与比赛的玩家的ID,获胜者和另一个布尔列,让我们说是否要在结果中包含该匹配。列是:
player1_id | player2_id | winner_id | use
所以winner_id
是前两列之一的值,具体取决于哪个玩家赢了。如果我想计算某个玩家只使用use
标志所在的行赢得游戏的次数,我可以轻松地执行以下操作:
SELECT COUNT(*) AS total, winner_id
FROM table
WHERE use = 1
GROUP BY winner_id
ORDER BY total DESC
但是,我也希望对失去比赛的球员做同样的计数。换句话说,我想不是按winner_id
而是按照失败者ID进行分组,这可能是player1_id
或player2_id
的值,具体取决于哪一个与winner_id
。有关如何通过简单查询运行的任何线索?
答案 0 :(得分:2)
你可以这样做来计算宽松:
SELECT
COUNT(*) AS total,
IF(player1_id = winner_id, player2_id, player1_id) AS looser_id
FROM table
WHERE use = 1
GROUP BY looser_id
ORDER BY total DESC