Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Update masivo a una tabla

Estas en el tema de Update masivo a una tabla en el foro de Mysql en Foros del Web. Buenas tardes; Estoy trabajando una base de datos en MySQL y quiero agregar una palabra a todos los registros en una columna de una tabla. ...
  #1 (permalink)  
Antiguo 24/03/2012, 19:11
Avatar de javier0730  
Fecha de Ingreso: enero-2010
Ubicación: Jalisco
Mensajes: 82
Antigüedad: 14 años, 3 meses
Puntos: 8
Update masivo a una tabla

Buenas tardes;

Estoy trabajando una base de datos en MySQL y quiero agregar una palabra a todos los registros en una columna de una tabla.

Dicho de otra forma: Yo tengo una tabla que se llama Referencias y esta tabla tiene la siguiente estrctura:
CREATE TABLE `referencias` (
`id` int(3) unsigned NOT NULL default '0',
`matricula` varchar(6) NOT NULL,
`referencia` varchar(8) NOT NULL,
`disponible` varchar(1) NOT NULL,
`salon` varchar(4) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Esta tabla tiene 1,000 registros, en donde el campo 'matricula' es en el siguiente consecutivo:
120001
120002
120003
.
.
.
121000

Deseo realizar un UPDATE masivo que cambie estos datos por:
REG120001
REG120002
REG120003
.
.
.
REG121000

¿Hay alguna forma de hacerlo? ya que de lo contrario tendria que editar los registros de uno por uno agregando la palabra REG a cada uno de los 1000 registros.

Espeo me puedan ayudar.
Gracias.
  #2 (permalink)  
Antiguo 25/03/2012, 08:11
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Update masivo a una tabla

Para hacer eso necesitas primero cambiar el tipo de columna de INT a VARCHAR, y luego hacer un UPDATE masivo que tome lo que hay y le agregue antes "REG".
Código MySQL:
Ver original
  1. UPDATE referencias
  2. SET id = CONCAT('REG', id);

Por otro lado, personalmente no le veo la utilidad de cambiar 120001, 120002, tc., por REG120001, REG120002, etc.
Si "REG2, es una categoría o un campo discriminante de la tabla, lo que necesitas es agregar una columna que lo contenga, y en las consultas hacer un CONCAT() entre ambas para obtener el ID de esa forma.
Por lo demás, el agregar un conjunto de caracteres hará que la condición de numero secuencial desaparezca, y no podrás hacer búsquedas de >= o <=, sin el auxilio de funciones de caracteres y conversiones.
¿Realmente es una necesidad del sistema hacerle ese agregado?
Creo que las desventajas superan a las ganancias...

Un tip final: ¿Sabías que ese numero entre paréntesis en la definición de un INT (como por ejemplo el INT(3)), no condiciona la cantidad de dígitos del número, sino sólo su representación en consola, y que de todos modos en tu caso no tiene ningún efecto?
El rango de una columna numérica no está definido por eso, sino por el tipo (INT, MEDIUMINT, etc.).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 25/03/2012 a las 09:00
  #3 (permalink)  
Antiguo 25/03/2012, 09:55
 
Fecha de Ingreso: junio-2011
Mensajes: 139
Antigüedad: 12 años, 10 meses
Puntos: 42
Respuesta: Update masivo a una tabla

Hola javier0730,

Entiendo que la columna que deseas modificar es `matricula` varchar(6), por lo cual debes cambian la longitud de dicha columna, en principio a `matricula` varchar(9), pero dependerá de lo que sea necesario.

Luego puedes hacer el UPDATE como lo indica gnzsoloyo:

Código SQL:
Ver original
  1. UPDATE `referencias`
  2. SET `matricula` = CONCAT('REG', `matricula`);
  #4 (permalink)  
Antiguo 25/03/2012, 12:08
Avatar de javier0730  
Fecha de Ingreso: enero-2010
Ubicación: Jalisco
Mensajes: 82
Antigüedad: 14 años, 3 meses
Puntos: 8
Respuesta: Update masivo a una tabla

Hola.

Gracias a los dos por responder, la instrucción funciono correctamente y efectivamente como dice wchiquito la columna a editar es la de matricula por lo que no hay ningún problema ya que el campo id es la clave primaria y este se queda tal cual.

Así que lo primero fue cambiar la longitud de `matricula` varchar(6) por `matricula` varchar(9) y posteriormente ejecutar la instrucción que indican y los 1000 registros se modificaron correctamente.

De nuevo agradezco su ayuda, me ha sido de gran utilidad.

Etiquetas: masivo, registros, sql, tabla, update, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:38.