查找连续行数设置为零的行。 (MySQL的)

时间:2016-10-27 15:43:22

标签: mysql sql database

我有一个约200万行的表,已经过一段时间的处理(每次100个),并根据调查结果在活动列中标记为1。

现在处理已经完成,我想确定一种查看该数据的方法,并找到该列仍然设置为0的任何大批量(表示处理中某个时刻出现故障)。

我有一个id列,顺序为1到2百万,活动列设置为0或1的几率大约为50/50(因此,任何批次的100+零肯定会是异常的。)

目标是能够向我指出:'嘿,从id = 500000开始连续出现2000条记录,活动列设置为0' 。由于手动查看它几乎是不可能的。

1 个答案:

答案 0 :(得分:2)

您可以将变量用于此目的:

select grp, min(id), max(id), active, count(*)
from (select t.*,
             (@grp := if(@a = active, @grp,
                         if(@a := active, @grp + 1, @grp + 1)
                        )
            ) as grp
      from t cross join
           (select @z := -1, @grp := 0) params
      order by id
     ) t
where active = 0
group by grp, active
order by count(*) desc;