编写mySQL以获取序列

编写mySQL以获取序列,mysql,Mysql,我需要得到一个特定运动队的胜负顺序。例如: 表:结果 teamid win eventdate ====== === ========= 1 0 26/01/2014 1 0 25/01/2014 2 1 26/01/2014 1 0 24/01/2014 1 1 21/01/2014 它应该返回teamid 1有一个丢失的序列3。但是在sql中我怎么能做到这一点呢

我需要得到一个特定运动队的胜负顺序。例如:

表:结果

teamid    win  eventdate
======    ===  =========
1         0    26/01/2014
1         0    25/01/2014
2         1    26/01/2014
1         0    24/01/2014 
1         1    21/01/2014

它应该返回teamid 1有一个丢失的序列3。但是在sql中我怎么能做到这一点呢

MySQL不支持分析功能,但计算连续胜负的一种方法是:

此查询可作为执行进一步分析的基础。例如,要按团队获得最长的连胜和失利记录,请执行以下操作:

SELECT teamid, win, MAX(seq) FROM (
  SELECT   @seq    := IF(@teamid<=>teamid AND @win<=>win,@seq,0)+1 seq,
           @teamid := teamid teamid,
           @win    := win win
  FROM     RESULTS, (SELECT @teamid:=NULL, @win:=NULL) init
  ORDER BY teamid, STR_TO_DATE(eventdate, '%d/%m/%Y')
) t GROUP BY teamid, win

那么,如果第一队连续三次失利,接着是四场胜利,接着是两场失利,情况会怎样呢;第二队连续7胜8负?您希望得到什么样的结果?应该是order by eventdate,但这并不能回答问题。一队连输两场
SELECT teamid, win, MAX(seq) FROM (
  SELECT   @seq    := IF(@teamid<=>teamid AND @win<=>win,@seq,0)+1 seq,
           @teamid := teamid teamid,
           @win    := win win
  FROM     RESULTS, (SELECT @teamid:=NULL, @win:=NULL) init
  ORDER BY teamid, STR_TO_DATE(eventdate, '%d/%m/%Y')
) t GROUP BY teamid, win