比如说:
我有两张表:旧数据和新数据。
旧数据和新数据都有一列称为this_is_col。
旧数据和新数据都有各种(数百)行日期(2010-02-06、2010-01-09、2007-06-02等)。两个表的日期不一定相同,但它们的格式都相同。
两个表的字段都是各种整数。
我的任务:
将字段从旧数据复制到新数据。
如果两个表中都存在日期,则新数据中的字段将被替换。
如果新数据中不存在日期,则将添加正确的行并复制字段。
我已经走了这么远:
创建临时列:

ALTER TABLE `new_data` ADD `tempColumn` TEXT NULL;

从旧数据复制数据:
INSERT INTO `new_data` (`tempColumn`) SELECT `this_is_col` FROM `old_data`;

合并临时列和新的存储单元数据。这是上校(我还没走这么远,就没想好这一步)。
MERGE? `tempColumn` `this_is_col`;

删除临时表
ALTER TABLE `new_data` DROP `tempColumn`;

在执行第二个操作(将数据传输到临时列)时,出现以下错误:
#1062 - Duplicate entry '0000-00-00' for key 1
现在我被困住了。任何帮助都将不胜感激。我使用mysql和phpmyadmin来测试sql命令。

最佳答案

假设您的日期被索引为唯一键:

INSERT INTO newtable
SELECT *
FROM oldtable
ON DUPLICATE KEY column1=oldcolumn1, ...

09-18 07:14