Ver Mensaje Individual
  #4 (permalink)  
Antiguo 06/02/2009, 13:21
SebasSebas
 
Fecha de Ingreso: junio-2008
Mensajes: 71
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Reducir varios updates

Cita:
Iniciado por quimfv Ver Mensaje
Si tienes los miles de pares de cambios en una tabla luego puedes hacer lo siguiente

UPDATE Tabla1 LEFT JOIN TABLA2 ON Tabla1.id = tabla2.Id
SET Tabla1.valor = Tabla2.valor;


Tabla2
valor::::id
A:::::::::1
B:::::::::2
...
ZEFD::::623641

Si?

Quim
Gracias, se ve interesante e ingenioso. Primero haría el insert a una tabla "C", luego el update y luego vaciado de la otra tabla. En tres tiros estaría muerto el problema .

Cita:
Iniciado por jurena Ver Mensaje
no sé si yo habré entendido mal, pero con esta sintaxis un case dentro de un set podrías hacerlo, eso sí no dejando de poner el ELSE final para evitar que se pierdan los datos de los campos donde no se produzca coincidencia. Imaginemos que tienes dos campos numero1 y numero2 y quieres que cuando el numero1 sea 1 el número2 sea 10, y cuando sea el numero1 2, el numero 2 sea 20, y que no cambie los demás...

UPDATE tabla SET valor=CASE WHEN id = 1 THEN 'A' WHEN id = 2 THEN 'B' WHEN id = 623641 THEN 'ZEFD' ELSE valor END

Seguro que hay soluciones más sencillas. Por cierto, no entiendo bien lo que dices acerca del problema que te produce REPLACE.
Muchas gracias de nuevo, me parece que si has entendido bien y esto también puede servir.

Lo del REPLACE es que tengo entendido que si ya existe una entrada con el mismo key primary o unique, lo borra y lo reescribe de nuevo.

Entonces si mi tabla tiene más columnas además de ID y de valor, entonces los pierdo ya que se "insertarán" sin valor y tomará el valor defult, o tengo que leerlos previamente para también introducirlos en el REPLACE.

Y aquello de "que si hay columnas con un autoincrement..." viene de lo mismo, estarían cambiando esos id orque se incrementarían.

PD: ¿y hay más sencillas? no dejo de sorprenderme en este foro

PD2: jurena al parecer el foro ya no me deja darte más karma son muchas varias las veces que me has ayudado.

-----------------------------------------------------------------------------------------

Por cosas que tiene la vida, tengo que dejar mis asuntos desde hoy y un par de semanas, en otras palabras no pasaré a probarlas, esa será tarea que retomaré luego, pero desde hoy les agradezco por su ayuda además que sus soluciones lucen bien en teoría y me parece que sea la que sea funcionará a la perfección a lo que quería.

Muchas gracias una vez más.