Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Encontre lacunas de sequência ausentes mysql


Você não pode retornar as linhas que estão faltando sem uma lista de todos os valores numéricos possíveis para LEFT JOIN contra.

Esta consulta (que parece que poderia ser melhor/mais forte/mais rápida, mas funciona) encontrará as lacunas:
set @last_prefix = null;
set @last_value = null;
select result from (
    select @last_prefix, @last_value, name,
      @prefix := substring(name,1,3) as prefix,
      @value := substring(name,4) as value,
      case when @prefix = @last_prefix and @value != @last_value +1
        then concat ("gap from ", @prefix, ": ", @last_value+1, " to ", @value-1)
        else "ok" end as result,
      @last_prefix := @prefix, @last_value := @value
      from t20120921
) foo
where result != "ok";