2012-07-17 122 views
1

我有两个表所示:如何一些列从一个表复制到另一个MySQL

表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

试试这个::

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

编辑::

如果您只需要更新则::

update table1 
set 
table1.C=table2.C, 
table1.D=table2.D, 
table1.E=table2.E, 
table1.G=table2.G, 
table1.J=table2.J 
WHERE 
table1.A = table2.A; 
+0

看到编辑请... :) – JackTurky 2012-07-17 08:37:37

+0

@JackTurky:编辑了我的查询PLZ检查 – 2012-07-17 11:18:43

+0

好的:)谢谢! :) – JackTurky 2012-07-17 12:13:20

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

+0

见编辑请求.. :) – JackTurky 2012-07-17 08:37:31

+0

列'A'是否是唯一的? – 2012-07-17 09:08:12

+0

yesss是唯一的:) – JackTurky 2012-07-17 18:17:09

相关问题