我有两张桌子,如:
表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'
错误在哪里?有人能帮我吗?
我的错误是我不需要插入新行,但是更新匹配列的行...我需要编辑查询的方式?谢谢!
答案 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。