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