我有两张 table ,看起来都像
id name value =================== 1 Joe 22 2 Derk 30
我需要根据每个表中的检查名称将 value 的值从 tableA 复制到 tableB .
value
tableA
tableB
这个 UPDATE 声明的任何提示?
UPDATE
将数据存储在临时表中
Select * into tempTable from table1
现在更新列
UPDATE table1 SET table1.FileName = (select FileName from tempTable where tempTable.id = table1.ID);
除了这个答案,如果你需要动态地根据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'
你需要加入这两个表:
例如,你想将tableA的 name 的值复制到 tableB ,它们具有相同的 ID
name
ID
UPDATE tableB t1 INNER JOIN tableA t2 ON t1.id = t2.id SET t1.name = t2.name WHERE t2.name = 'Joe'
UPDATE 1
UPDATE tableB t1 INNER JOIN tableA t2 ON t1.id = t2.id SET t1.name = t2.name
UPDATE 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 );
如果您正在使用安全更新模式(并且您收到错误,表明您尝试更新没有使用KEY列的WHERE的表),则第二个选项也是可行的,方法是添加:
UPDATE TableB SET TableB.value = ( SELECT TableA.value FROM TableA WHERE TableA.name = TableB.name ) **where TableB.id < X** ;
如果你在两个表中都有共同的字段,那就太容易了!....
表-1 =要更新的表 . 表-2 =您从中获取数据的表 .
在表-1中进行查询并查找公共字段值 .
根据表1值进行循环并从表-2中查找所有数据 .
再次在表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(); } }
6 回答
将数据存储在临时表中
现在更新列
除了这个答案,如果你需要动态地根据tableA.value更改tableB.value,你可以这样做:
你需要加入这两个表:
例如,你想将tableA的
name
的值复制到tableB
,它们具有相同的ID
UPDATE 1
UPDATE 2
第二种可能性是,
如果您正在使用安全更新模式(并且您收到错误,表明您尝试更新没有使用KEY列的WHERE的表),则第二个选项也是可行的,方法是添加:
如果你在两个表中都有共同的字段,那就太容易了!....
表-1 =要更新的表 . 表-2 =您从中获取数据的表 .
在表-1中进行查询并查找公共字段值 .
根据表1值进行循环并从表-2中查找所有数据 .
再次在表1中进行更新查询 .