У меня есть две таблицы, похожие на
id name value
===================
1 Joe 22
2 Derk 30
Мне нужно скопировать значение value
с tableA
на tableB
на основе имени проверки в каждой таблице.
Любые подсказки для этого утверждения UPDATE
?
В дополнение к этому ответу, если вам нужно динамически изменить tableB.value в соответствии с tableA.value, вы можете сделать, например:
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
из таблицы A в 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
where
или изменить предложение where
зависимости от ваших потребностей.
Вторая возможность:
UPDATE TableB
SET TableB.value = (
SELECT TableA.value
FROM TableA
WHERE TableA.name = TableB.name
);
Второй вариант возможен также, если вы используете безопасный режим обновлений (и вы получаете сообщение об ошибке, указывающее, что вы пытались обновить таблицу без WHERE, которая использует столбец KEY), добавив:
UPDATE TableB
SET TableB.value = (
SELECT TableA.value
FROM TableA
WHERE TableA.name = TableB.name
)
**where TableB.id < X**
;
--Store ваши данные во временной таблице Выберите * в tempTable из таблицы 1
--Now Обновить столбец ОБНОВЛЕНИЕ table1 SET table1.FileName = (выбрать FileName из tempTable, где tempTable.id = table1.ID);
Если у вас есть общие поля в обеих таблицах, то это так просто!....
Таблица-1 = таблица, где вы хотите обновить. Таблица-2 = таблица, откуда вы берете данные.
$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();
}
}
INNER JOIN
идеально подходит в этой ситуации. Я также использовалCONCAT_WS
для объединения имениCONCAT_WS
и SKU из другой таблицы