首页 文章

mysql更新列,其中包含来自另一个表的值

提问于
浏览
176

我有两张 table ,看起来都像

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

我需要根据每个表中的检查名称将 value 的值从 tableA 复制到 tableB .

这个 UPDATE 声明的任何提示?

6 回答

  • 77

    将数据存储在临时表中

    Select * into tempTable from table1
    

    现在更新列

    UPDATE table1
        SET table1.FileName = (select FileName from tempTable where tempTable.id = table1.ID);
    
  • 330

    除了这个答案,如果你需要动态地根据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'
    
  • 0

    你需要加入这两个表:

    例如,你想将tableA的 name 的值复制到 tableB ,它们具有相同的 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
    
  • 137

    第二种可能性是,

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

    如果您正在使用安全更新模式(并且您收到错误,表明您尝试更新没有使用KEY列的WHERE的表),则第二个选项也是可行的,方法是添加:

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

    如果你在两个表中都有共同的字段,那就太容易了!....

    表-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();
        }
    
    
    }
    

相关问题