mysql两个相同的表插入,没有主键
我有两张结构相似和相同的桌子,让我们称它们为tbl_old和tbl_new。 表如下所示mysql两个相同的表插入,没有主键,mysql,sql,Mysql,Sql,我有两张结构相似和相同的桌子,让我们称它们为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 652
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两列上有唯一的_索引。
没有两行可以同时具有相同的deptid和usrname
现在我有了另一个包含一些数据的表,我想在现有表中插入数据。
以这种方式从新tbl_插入到旧tbl_的数据
如果deptid和usrname组合相同,则tbl_new中的行应替换旧行。
如果数据不存在,则应插入数据
实际上,还有其他几个专栏,比如usramount,我在这里没有提到。
旧tbl_有200万条记录,新tbl_有50万条记录。
请推荐一个运行最快的mysql查询。我对你的回答有些犹豫,我有20列,写所有的列名都会有问题。。当两个表中的deptid和usrname组合相同时,我不能替换整行吗?plz@david35:不,你不能。您键入的注释比键入20列要多。
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)