1

我有两张桌子,例如:

表格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'

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

我的错误是我不必插入新行,而是更新与 A 列匹配的行...我必须以哪种方式编辑查询?谢谢!

4

2 回答 2

6

试试这个::

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
    ;
于 2012-07-17T07:36:49.770 回答
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 。

重复密钥更新

于 2012-07-17T07:44:46.613 回答