Huecos en una serie MySQL

¿Cuántas veces te habrá pasado que estás llenando una tabla, borras registros y después intentas rellenar los huecos, pero es un caos? Bueno, pues existe una solución sencilla, que puedes aplicar en cualquier caso: se trata de una consulta que te devuelve el campo numérico más pequeño libre de la serie. La consulta usa variables de MySQL de una forma sencilla sin entrar a funciones.

Poniéndonos en situación, tendremos una tabla:

 

tabla1
id int(11) not null auto_increment
campo1 varchar(40) not null

 

CREATE TABLE IF NOT EXISTS `numeros` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `campo1` VARCHAR(40) COLLATE utf8_spanish_ci NOT NULL,
  PRIMARY KEY  (`id`)

) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci AUTO_INCREMENT=1 ;

  
SELECT @a:=0;
SELECT minimo FROM
(SELECT id ,@a+1 as minimo, @a:=id AS ordenacion

FROM tabla1
ORDER BY id
) t1
WHERE t1.id!=t1.minimo;
 

El resultado de esta consulta es el campo más pequeño libre de la serie. El único problema existe si ejecutamos al mismo tiempo dos consultas que usen la variable de MySQL: entonces el resultado no será correcto (cabe decir que esto es muy complicado, porque las consultas se ejecutan rapidísimo, y sería mucha casualidad). En un próximo post resolveremos este problema.

1 comentario sobre "Huecos en una serie MySQL"

r0sk
Muy interesante lo de las variables en MySQL. Espero ese <em>próximo post</em> con impaciencia :D.