columna de actualización de mysql con valor de otra tabla
Tengo dos tablas, ambas pareciendo
id name value
===================
1 Joe 22
2 Derk 30
Necesito copiar el valor de value
de tableA
a tableB
basado en el nombre de verificación en cada tabla.
¿Algún consejo para esta declaración UPDATE
?
6 answers
Además de esta respuesta si necesita cambiar t1.valor según t2.valor dinámicamente se puede hacer por ejemplo:
UPDATE tableB
INNER JOIN tableA ON tableB.name = tableA.name
SET tableB.value = IF(tableA.value > 0, tableA.value, tableB.value)
WHERE tableA.name = 'Joe'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-15 12:35:30
Necesitas unir las dos tablas:
Por ejemplo, desea copiar el valor de name
de TableA en tableB
donde tienen el mismo ID
UPDATE tableB t1
INNER JOIN tableA t2
ON t1.id = t2.id
SET t1.name = t2.name
WHERE t2.name = 'Joe'
ACTUALIZACIÓN 1
UPDATE tableB t1
INNER JOIN tableA t2
ON t1.id = t2.id
SET t1.name = t2.name
ACTUALIZACIÓN 2
UPDATE tableB t1
INNER JOIN tableA t2
ON t1.name = t2.name
SET t1.value = t2.value
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-29 12:07:28
La segunda posibilidad es,
UPDATE TableB
SET TableB.value = (
SELECT TableA.value
FROM TableA
WHERE TableA.name = TableB.name
);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-15 12:36:09
La segunda opción también es factible si está utilizando el modo de actualizaciones seguras (y está recibiendo un error que indica que ha intentado actualizar una tabla sin una DONDE que utiliza una columna CLAVE), agregando:
UPDATE TableB
SET TableB.value = (
SELECT TableA.value
FROM TableA
WHERE TableA.name = TableB.name
)
**where TableB.id < X**
;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-07 07:39:21
Store Almacena tus datos en la tabla temporal Seleccione * en Tentable desde tabla1
Update Ahora Actualice la columna Tabla DE actualización1 ESTABLECER tabla1.FileName = (seleccione FileName de tempTable donde tempTable.id = table1.ID);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-15 14:12:42
Si tiene un campo común en ambas tablas, ¡es muy fácil !....
Table-1 = tabla donde desea actualizar. Tabla-2 = tabla de donde usted toma los datos.
- haga una consulta en la Tabla-1 y encuentre el valor de campo común.
- haga un bucle y encuentre todos los datos de la Tabla-2 de acuerdo con el valor de la tabla 1.
- nuevamente haga una consulta de actualización en la tabla 1.
$qry_asseet_list = mysql_query("SELECT 'primary key field' FROM `table-1`");
$resultArray = array();
while ($row = mysql_fetch_array($qry_asseet_list)) {
$resultArray[] = $row;
}
foreach($resultArray as $rec) {
$a = $rec['primary key field'];
$cuttable_qry = mysql_query("SELECT * FROM `Table-2` WHERE `key field name` = $a");
$cuttable = mysql_fetch_assoc($cuttable_qry);
echo $x= $cuttable['Table-2 field']; echo " ! ";
echo $y= $cuttable['Table-2 field'];echo " ! ";
echo $z= $cuttable['Table-2 field'];echo " ! ";
$k = mysql_query("UPDATE `Table-1` SET `summary_style` = '$x', `summary_color` = '$y', `summary_customer` = '$z' WHERE `summary_laysheet_number` = $a;");
if ($k) {
echo "done";
} else {
echo mysql_error();
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-22 18:06:19