sql >> Database teknologi >  >> RDS >> Mysql

Find manglende sekvenshuller mysql

Du kan ikke returnere de rækker, der mangler uden en liste over alle mulige numeriske værdier til LEFT JOIN imod.

Denne forespørgsel (som føles som om den kunne være bedre/stærkere/hurtigere, men den virker) vil finde hullerne for dig:

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. Sådan opretter du en tidspunktarkitektur i MySQL

  2. SQL:Hvordan kan jeg kun opdatere en værdi på en kolonne, hvis denne værdi er null?

  3. SQL Server ANSI_NULLS Forklaret

  4. MySQL Dublerede rækker