我通常通过以下查询每天将数据从表A复制到tabelB中:
REPLACE INTO tableB (id,col1,col2,col3) SELECT id,col1,col2,col3 FROM tableA WHERE date='somedate'
这里使用REPLACE,好像脚本在特定日期错误地运行了两次,它不会将tableA两次复制到tableB中。但问题是,tableB有两个唯一的密钥索引(id和col1)。因此,如果多次执行REPLACE,则会删除索引并通过此REPLACE命令重新创建。为了避免这种情况,我想使用:
INSERT INTO tableB (id,col1,col2,col3) VALUES (val1,val2,val3,val4) ON DUPLICATE KEY UPDATE col2=VALUES(col2),col3=VALUES(col3)
但是当我在这里复制tableA时,我无法使用上面的INSERT ........ ON DUPLICATE KEY UPDATE查询,我必须使用SELECT命令从tableA复制数据。
那么如何修改INSERT INTO ........... ON DUPLICATE KEY UPDATE查询,这样它就可以复制tableA,同时如果不止一次执行脚本,它只会更新数据
此致
答案 0 :(得分:0)
尝试此INSERT查询 -
INSERT INTO tableB (id, col1, col2, col3)
SELECT id, col1, col2, col3 FROM tableA WHERE date = 'somedate'
ON DUPLICATE KEY UPDATE col2 = VALUES(col2), col3 = VALUES(col3);