столбец обновления mysql со значением из другой таблицы

у меня есть два стола, оба выглядят как

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

мне нужно скопировать значение value С tableA to tableB на основе имени проверки в каждой таблице.

любые советы по этой UPDATE заявление?

6 ответов


В дополнение к этому ответу, если вам нужно изменить Т1.значение по Т2.значение динамически вы можете сделать, например:

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'

вам нужно присоединиться к двум таблицам:

например, вы хотите скопировать значение name из таблицы в tableB там же ID

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

обновление 1

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

обновление 2

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

вторая возможность заключается в том,

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

второй вариант также возможен, если вы используете безопасный режим обновлений (и вы получаете сообщение об ошибке, указывающее, что вы пытались обновить таблицу без использования ключевого столбца), добавив:

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

--храните данные в таблице temp Выберите * в tempTable из table1

--теперь обновите столбец Обновление table1 Набор таблица1.FileName = (выберите FileName из tempTable, где tempTable.id = table1.ID);


Если у вас есть общее поле в таблице, то это так легко !....

Таблица-1 = таблица, в которой вы хотите обновить. Table-2 = таблица, из которой вы берете данные.

  1. сделайте запрос в Таблице-1 и найдите общее значение поля.
  2. сделайте цикл и найдите все данные из таблицы-2 в соответствии со значением таблицы 1.
  3. снова сделайте запрос обновления в таблице 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();
    }


}