Tengo dos mesas, ambas parecidas
id name value
===================
1 Joe 22
2 Derk 30
Necesito copiar el valor de value
from tableA
a en tableB
función del nombre de verificación en cada tabla.
¿Algún consejo para esta UPDATE
declaración?
mysql
sql
sql-update
LeoSam
fuente
fuente
INNER JOIN
es perfecto en esta situación. También solíaCONCAT_WS
fusionar el nombre del producto y el SKU de otra tablaUPDATE participants_registrations INNER JOIN participants ON participants.id = participants_registrations.participantId INNER JOIN registrations ON registrations.id = participants_registrations.registrationId LEFT JOIN groups ON (groups.id = registrations.groupId) SET registrations.groupId = groups.id, registrations.groupName = groups.name, participants.memberOfGroupName = groups.name
necesitas unir las dos tablas:
por ejemplo, desea copiar el valor de
name
tableA entableB
donde tienen el mismoID
ACTUALIZACIÓN 1
ACTUALIZACIÓN 2
fuente
where
cláusula o modificarlawhere
según sus necesidades ..La segunda posibilidad es,
fuente
.name
se indexa en ambas tablas?La segunda opción también es factible si está utilizando el modo de actualizaciones seguras (y obtiene un error que indica que ha intentado actualizar una tabla sin un DÓNDE que usa una columna CLAVE), agregando:
fuente
fuente
Almacene sus datos en la tabla temporal
Ahora actualice la columna
fuente
En mi caso, la solución aceptada fue demasiado lenta. Para una tabla con 180K filas, la tasa de actualizaciones fue de aproximadamente 10 filas por segundo. Esto es con los índices en los elementos de unión.
Finalmente resolví mi problema usando un procedimiento:
Espero que ayude a alguien en el futuro como me ayudó
fuente
Si tiene un campo común en ambas tablas, ¡entonces es tan fácil! ...
Tabla-1 = tabla donde desea actualizar. Tabla-2 = tabla de donde tomas los datos.
fuente