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?

Author: fedorqui, 2012-07-29

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'
 290
Author: RafaSashi,
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
 127
Author: John Woo,
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
);
 72
Author: Samir Alajmovic,
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**  
;
 3
Author: raul7,
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);

 0
Author: Abid Mahmood,
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.

  1. haga una consulta en la Tabla-1 y encuentre el valor de campo común.
  2. haga un bucle y encuentre todos los datos de la Tabla-2 de acuerdo con el valor de la tabla 1.
  3. 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();
    }


}
 -2
Author: Mahabubur Rahman Masum,
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