sql >> Databasteknik >  >> RDS >> Mysql

Hitta saknade sekvensluckor mysql

Du kan inte returnera de rader som saknas utan en lista med alla möjliga numeriska värden till LEFT JOIN mot.

Den här frågan (som känns som att den skulle kunna vara bättre/starkare/snabbare, men den fungerar) kommer att hitta luckorna:

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. SQL Server-utgångsklausul till en skalär variabel

  2. Vad är det bästa sättet att skapa och fylla i en taltabell?

  3. Hur genererar man data i MySQL?

  4. Fyller i rullgardinsmenyn - PHP Ajax MySQL