mysql aggiornamento colonna con valore da un’altra tabella

Ho due tavoli, entrambi simili

id name value =================== 1 Joe 22 2 Derk 30 

Ho bisogno di copiare il valore del value da tableA a tableB base al nome di controllo in ogni tabella.

Qualche consiglio per questa dichiarazione UPDATE ?

Oltre a questa risposta, se è necessario modificare dynamicmente il valore t1.value in base al valore t2.value, ad esempio:

 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' 

devi unirti alle due tabelle:

per esempio vuoi copiare il valore del name da tableA in tableB dove hanno lo stesso ID

 UPDATE tableB t1 INNER JOIN tableA t2 ON t1.id = t2.id SET t1.name = t2.name WHERE t2.name = 'Joe' 

AGGIORNAMENTO 1

 UPDATE tableB t1 INNER JOIN tableA t2 ON t1.id = t2.id SET t1.name = t2.name 

AGGIORNAMENTO 2

 UPDATE tableB t1 INNER JOIN tableA t2 ON t1.name = t2.name SET t1.value = t2.value 

La seconda possibilità è,

 UPDATE TableB SET TableB.value = ( SELECT TableA.value FROM TableA WHERE TableA.name = TableB.name ); 

La seconda opzione è fattibile anche se si sta utilizzando la modalità di aggiornamento sicuro (e si riceve un errore che indica che si è tentato di aggiornare una tabella senza un WHERE che utilizza una colonna KEY), aggiungendo:

 UPDATE TableB SET TableB.value = ( SELECT TableA.value FROM TableA WHERE TableA.name = TableB.name ) **where TableB.id < X** ; 

– Memorizza i tuoi dati nella tabella temporanea Seleziona * in tempTable da table1

– Ora Aggiorna la colonna UPDATE table1 SET table1.FileName = (seleziona FileName da tempTable dove tempTable.id = table1.ID);

Se hai un campo comune in entrambe le tabelle, è così facile! ….

Tabella 1 = tabella in cui si desidera aggiornare. Table-2 = tabella da cui si prendono i dati.

  1. crea una query in Table-1 e trova il valore di campo comune.
  2. crea un loop e trova tutti i dati dalla tabella 2 in base al valore della tabella 1.
  3. effettuare nuovamente la query di aggiornamento nella tabella 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(); } }