【发布时间】:2020-03-29 20:01:55
【问题描述】:
我有一张桌子:
+----------+-----------+----------+--------+
| id | winnerId | loserId | gameId |
+----------+-----------+----------+--------+
| 1 | user1 | user2 | 1 |
| 2 | user2 | user1 | 1 |
| 3 | user1 | user2 | 1 |
| 4 | user1 | user2 | 2 |
5 user1 user3 1
+----------+-----------+----------+--------+
实际上我在表中有更多列,但它们无关,但请考虑
给定winnerId、loserId 和gameId,我想获得获胜者和失败者玩家相互对抗
的总得分(获胜次数)查询输入示例:
winnerId:user1
loserId:user2
gameId:1
结果:
--userId--totalScore--
user1 2
user2 1
【问题讨论】:
-
做一个 GROUP BY。使用 COUNT()。
-
赢家/输家ID有什么相关性?看起来您刚刚给出了 gameId 1 的每个用户的获胜次数,即
SELECT winnerId, count(*) FROM t WHERE gameid = 1 GROUP BY winnerId- 它会产生您的输出并且根本不使用用户 ID -
我想获取 2 名玩家之间的获胜次数。我在示例数据中添加了一行以更好地解释