举例来说:
>我有两个表:old_data和new_data.
> old_data和new_data都有一列称为this_is_col.
> old_data和new_data都具有各种(数百)行日期(2010-02-06、2010-01-09、2007-06-02等).两个表不一定具有相同的日期,但是它们都具有相同的格式.
>两个表的字段都是各种整数.
我的任务:
>将字段从old_data复制到new_data.
>如果两个表中都存在日期,则new_data中的字段将被替换.
>如果日期在new_data中不存在,则将添加正确的行,并将字段复制过来.
这是我走了多远:
创建一个临时列:
ALTER TABLE `new_data` ADD `tempColumn` TEXT NULL;
从old_data复制数据:
INSERT INTO `new_data` (`tempColumn`) SELECT `this_is_col` FROM `old_data`;
合并临时列和new_data. this_is_col. (因为我还没有走这么远,所以我还没有真正想出这个步骤).
MERGE? `tempColumn` `this_is_col`;
删除临时表
ALTER TABLE `new_data` DROP `tempColumn`;
在执行第二项操作(将数据转移到临时列)后,出现此错误:
#1062-密钥1的重复条目’0000-00-00′
现在我被卡住了.任何帮助,将不胜感激.我正在使用MySQL和phpMyAdmin来测试SQL命令.
最佳答案
假设您的日期被索引为唯一键:
INSERT INTO newtable
SELECT *
FROM oldtable
ON DUPLICATE KEY column1=oldcolumn1,...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。