mameyugo;

, 1 comentarios, 3518 lecturas, por: Jose Manuel Muras Rodrigo

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.

mysql

Comentarios sobre huecos en una serie mysql

avatar
r0sk
08.Oct.2008
(rating: 5)
Muy interesante lo de las variables en MySQL. Espero ese próximo post con impaciencia :D.
Unete!