我有两个具有相似和相同结构的表,让我们称它们为tbl_old和tbl_new。 该表如下
deptid usrname amount
1111 jack 80000
1111 jill 80900
2799 tom 70933
3000 tim 20000
2799 jill 90000
8988 mary 70800
6889 tom 65200
我在deptid和usrname这两列上有unique_index。 没有两行可以将deptid和usrname放在一起。
现在我有另一个包含一些数据的表,我想在现有表中插入数据。 以这种方式从tbl_new插入到tbl_old的数据 如果deptid和usrname组合相同,则tbl_new中的行应替换旧行。 如果数据不存在,则应插入。
实际上还有其他几个像usramount这样的栏目,我在这里没有提到过。 tbl_old有200万条记录,tbl_new有50万条记录。 请建议一个可以运行得最快的mysql查询。
答案 0 :(得分:0)
INSERT
INTO tbl_old (deptid, usrname, amount, usramount)
SELECT deptid, username, amount, usramount
FROM tbl_new
ON DUPLICATE KEY
UPDATE amount = VALUES(amount),
usramount = VALUES(usramount)