cuantas veces te habra pasado que estas llenando una tabla, borras registros y despues intentas rellenar los huecos pero es un caos, bueno pues existe una solucion sencilla, que puedes aplicar en cualquier caso, se trata de una consulta que te devuelve el campo numerico mas pequeño libre de la serie. la consulta usa variables de mysql de una forma sencilla sin entrar a funciones.
poniendonos en situacion 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 mas pequeño libre de la serie, el unico problema existe si ejecutamos al mismo tiempo dos consultas que usen la variable de mysql, entonces el resultado no sera correcto (cabe decir que esto es muy complicado, porque las consultas se ejecutan rapidisimo, y seria mucha casualidad), en un proximo post resolveremos este problema.