首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取连续行mysql

获取连续行mysql
EN

Stack Overflow用户
提问于 2016-03-04 19:55:17
回答 2查看 52关注 0票数 0

我正在创建一个Rock Papper Scisors游戏,我面临的问题是,我需要根据3、5或7的最佳值来设置一个赢家,为此我需要计算连续查询的次数--我的投注表很简单:

BO3

代码语言:javascript
复制
ID|GAME_ID|WINNER
1 |145    |15
2 |145    |14
3 |145    |15
4 |145    |15

15需要赢,我怎么能在mysql中计算呢?

例:

代码语言:javascript
复制
GAME_ID|WINNER|CONSECUTIVES
    145|15    |2

非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-04 21:18:15

我认为您需要这方面的变量:

代码语言:javascript
复制
select gameid, winner, max(rn)
from (select s.*,
             (@rn := if(@gw = concat_ws(':', gameid, winner), @rn + 1,
                        if(@gw := concat_ws(':', gameid, winner), 1, 1)
                       )
             ) as rn
      from scores s cross join
           (select @gw := '', @rn := 0) params
      order by s.id
     ) s
group by gameid, winner;

这里是一个SQL。

票数 1
EN

Stack Overflow用户

发布于 2016-03-04 20:07:36

也许是这样的:

代码语言:javascript
复制
select y.winner, 
  case when y2.cnt <= 3 then 'Best of 3' 
       when y2.cnt <= 5 then 'Best of 5' 
       when y2.cnt <= 7 then 'Best of 7' 
   end, count(*)
from yourtable y join (
  select count(*) cnt, gameid
  from yourtable
  group by gameid) y2 on y.gameid = y2.gameid
group by y.gameid, y.winner, y2.cnt
having count(*) = 2 and y2.cnt <= 3 or 
 count(*) = 3 and y2.cnt <= 5 or 
 count(*) = 4 and y2.cnt <= 7
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35804960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档