Bạn không thể trả lại các hàng bị thiếu nếu không có danh sách tất cả các giá trị số có thể có vào LEFT JOIN
chống lại.
Truy vấn này (có vẻ như nó có thể tốt hơn / mạnh hơn / nhanh hơn, nhưng nó hoạt động) sẽ tìm cho bạn những lỗ hổng:
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";