如何使用IF语句计算MySQL中的行数?

时间:2017-02-14 15:08:36

标签: mysql sql

我有一个相对简单的问题,但我仍然坚持编写一个正确的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_idplayer2_id的值,具体取决于哪一个与winner_id。有关如何通过简单查询运行的任何线索?

1 个答案:

答案 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