sql >> Databáze >  >> RDS >> Mysql

Najděte chybějící mezery v sekvenci mysql

Chybějící řádky nelze vrátit bez seznamu všech možných číselných hodnot do LEFT JOIN proti.

Tento dotaz (který by mohl být lepší/silnější/rychlejší, ale funguje) vám najde mezery:

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



  1. Jak sprintf() chrání před SQL injection?

  2. Jak dochází k poškození databáze?

  3. Unitils a DBMaintainer – jak zajistit, aby fungovaly s více uživateli/schématy?

  4. Musím použít mysql_real_escape_string, když vážím parametry?