替代REPLACE INTO TABLE mysql查询

时间:2013-12-20 14:15:50

标签: mysql replace

我通常通过以下查询每天将数据从表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,同时如果不止一次执行脚本,它只会更新数据

此致

1 个答案:

答案 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);