如何将某些列从表复制到另一个mysql

时间:2012-07-17 07:33:01

标签: mysql copy

我有两张桌子,如:

表1:

|A|B|C|D|E|F|G|H|I|J|

表2:

|A|C|D|E|G|H|J|K|L|M|N|O|P|

我必须将表2中的一些列复制到表1中。 我尝试的是:

INSERT INTO `table 1` (`C`,`D`,`E`,`G`,`J`)
     SELECT `C`,`D`,`E`,`G`,`J` FROM `table 2` WHERE 
     `table 1`.`A` = `table 2`.`A`;

但结果是:

#1054 - Unknown column 'table 1.A' in 'where clause'

错误在哪里?有人能帮我吗?

我的错误是我不需要插入新行,但是更新匹配列的行...我需要编辑查询的方式?谢谢!

2 个答案:

答案 0 :(得分:5)

试试这个::

INSERT INTO `table1` (`C`,`D`,`E`,`G`,`J`) VALUES
     (SELECT `C`,`D`,`E`,`G`,`J` FROM `table2` WHERE 
     `table1`.`A` = `table2`.`A`);

<强>编辑::

如果您只需要更新::

    update table1 
    inner join table2 on table1.A = table2.A
    set 
    table1.C=table2.C, 
    table1.D=table2.D,
    table1.E=table2.E, 
    table1.G=table2.G,
    table1.J=table2.J
    WHERE 1=1
    ;

答案 1 :(得分:2)

INSERT INTO `table 1` (`A`,`C`,`D`,`E`,`G`,`J`)
SELECT `t2`.`A`, `t2`.`C`, `t2`.`D`, `t2`.`E`, `t2`.`G`, `t2`.`J`
FROM `table 2` AS t2
INNER JOIN `table 1` AS t1
ON `t2`.`A` = `t1`.`A`
ON DUPLICATE KEY UPDATE `C` = VALUES(`C`), `D` = VALUES(`D`), `E` = VALUES(`E`), `G` = VALUES(`G`), `J` = VALUES(`J`)

我在给定的查询中看不到任何JOIN。

ON DUPLICATE KEY UPDATE