sql-将来自单独表的两列组合在一起

举例来说:

>我有两个表: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′

现在我被卡住了.任何帮助,将不胜感激.我正在使用MysqLPHPMyAdmin来测试sql命令.

最佳答案
假设您的日期被索引为唯一键:

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

相关文章

昨天的考试过程中,有个考点的服务器蓝屏重启后发现Mysql启动不了(5.6.45 x32版本,使用innoDB),重装后...
整数类型 标准 SQL 中支持 INTEGER 和 SMALLINT 这两种类型,MySQL 数据库除了支持这两种类型以外,还扩...
一条 SQL 查询语句结构如下: SELECT DISTINCT <select_list> FROM <left_table&...
数据备份 1. 备份数据库 使用 mysqldump 命令可以将数据库中的数据备份成一个文本文件,表的结构和数据...
概述 在实际工作中,在关系数据库(MySQL、PostgreSQL)的单表数据量上亿后,往往会出现查询和分析变慢...
概述 触发器是 MySQL 的数据库对象之一,不需要程序调用或手工启动,而是由事件来触发、激活,从而实现...