【发布时间】:2015-08-26 15:43:19
【问题描述】:
我有一个表格,其中包含游戏的赢家和输家统计数据:
id winner_id loser_id
1 1 2
2 1 2
3 3 4
4 4 3
5 1 2
6 2 1
7 3 4
8 3 2
9 3 5
10 3 6
11 2 3
12 3 6
13 2 3
我想要一个结果表,我可以在其中找到游戏中每个玩家的最高连胜纪录。当一名球员输掉一场比赛(player_id = loster_id)时,他的连胜记录被打破。它应该看起来像:
player_id win_streak
1 3
2 2
3 4
4 1
5 0
6 0
我尝试了许多使用用户定义变量等的查询,但我找不到解决方案。谢谢!
SQL 小提琴:http://sqlfiddle.com/#!9/3da5f/1
【问题讨论】:
-
感谢您的链接!我想知道为什么它出现在我的问题中;)
-
你的表应该反映什么?最好的连胜纪录还是最近的连胜纪录?
-
那么你想要的结果对于你的例子是错误的......你应该为每个玩家添加其余的条纹......
-
@Jorge Campos,你是对的!我的目标是每个球员的最高连胜纪录。我编辑了问题。
-
好吧,要么你将不得不使用我在 mysql 游标内或在你的应用程序代码中谈到的那个变量。您必须根据扫描期间稍后可能发生或不发生的事件进行顺序聚合(计数)(可能稍后出现的结果记录可能会结束连续或增加计数器)。你的 SQL 代码真的很难看。最好保持您的数据模型干净,并依靠您的应用代码来做到这一点。