sql >> Base de Datos >  >> RDS >> Mysql

Encuentra espacios de secuencia faltantes mysql

No puede devolver las filas que faltan sin una lista de todos los valores numéricos posibles para LEFT JOIN contra.

Esta consulta (que parece que podría ser mejor/más fuerte/más rápida, pero funciona) encontrará las brechas:

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";