使用相同的列数和名称从一个表复制到另一个表

时间:2013-08-21 13:35:02

标签: php mysql pdo

我有以下两张表......

Table1
colA    colB    colC    
1       a       w    
2       b       w    
3       c       s        
4       b       g    
5       n         


Table2
colA    colB    colC    
1       w       f    
2       w       r    
3       s       g    

我想使用UPDATE查询从table1复制到table2,我遇到的问题是我必须设置所有列名,其中每个表有100列,但我也有相同的列数和名称。

在php中运行查询UPDATE的简单方法是什么?

是否有一些foreach事情可能会...

这就是我现在拥有的......

public function update($id){
            try {
                UPDATE table1 b 
                INNER JOIN connect c 
                ON c.ID = b.ID 
                INNER JOIN table2 a 
                ON a.ID_a = c.ID_a 
                SET b.colA = a.colA,
                b.colB = a.colB,
                b.colC = a.colC
                .
                .
                .
                .
                . coontinue here all column name..
                .
                .
                WHERE a.ID_a = '".$id."' ";
             } catch(PDOException $e) {
                 $e->getMessage();
            }
            return false;
        }
请问一些想法?

2 个答案:

答案 0 :(得分:4)

您不需要通过UPDATE语法来完成此操作。您可以使用INSERT..SELECT

INSERT INTO `table2` SELECT * FROM `table1`

如果两个表中的结构完全相同,这将有效。如果没有,则必须编写列名(并将第一个表中的列映射到第二个表)。

如果您想要替换相应的值,那么您应该先删除当前值:

DELETE FROM `table2` WHERE `colA` IN (SELECT `colA` FROM `table1`)

答案 1 :(得分:1)

如果要更新第一个表中的数据,请使用其他表中的值,您可以使用下一个语句

UPDATE table_name AS t1 
SET t1.field_name = (SELECT field_name FROM other_table AS t2 WHERE t1.field=t2.field)