[英]mysql update column with value from another table
我有兩張桌子,看起來都像
id name value
===================
1 Joe 22
2 Derk 30
我需要根據每個表中的檢查名稱將 value 的value
從tableA
復制到tableB
。
此UPDATE
語句的任何提示?
除了這個答案,如果您需要根據 tableA.value 動態更改 tableB.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
的值從 tableA 復制到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 cities c,
city_langs cl
SET c.fakename = cl.name
WHERE c.id = cl.city_id
如果您使用安全更新模式(並且您收到一個錯誤,表明您嘗試更新沒有使用 KEY 列的 WHERE 的表),第二個選項也是可行的,添加:
UPDATE TableB
SET TableB.value = (
SELECT TableA.value
FROM TableA
WHERE TableA.name = TableB.name
)
**where TableB.id < X**
;
將您的數據存儲在臨時表中
Select * into tempTable from table1
現在更新列
UPDATE table1
SET table1.FileName = (select FileName from tempTable where tempTable.id = table1.ID);
就我而言,公認的解決方案太慢了。 對於具有 180K 行的表,更新速率約為每秒 10 行。 這是連接元素上的索引。
我終於使用一個程序解決了我的問題:
CREATE DEFINER=`my_procedure`@`%` PROCEDURE `rescue`()
BEGIN
declare str VARCHAR(255) default '';
DECLARE n INT DEFAULT 0;
DECLARE i INT DEFAULT 0;
DECLARE cur_name VARCHAR(45) DEFAULT '';
DECLARE cur_value VARCHAR(10000) DEFAULT '';
SELECT COUNT(*) FROM tableA INTO n;
SET i=0;
WHILE i<n DO
SELECT namea,valuea FROM tableA limit i,1 INTO cur_name,cur_value;
UPDATE tableB SET nameb=cur_name where valueb=cur_value;
SET i = i + 1;
END WHILE;
END
我希望它會幫助將來的某個人,就像它對我的幫助一樣
更新 tableA set value = tableB.value from tableB where tableA.name =tableB.name
如果您在兩個表中都有共同的字段,那就太容易了!....
表 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();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.