mysql两个相同的表插入,没有主键

时间:2014-06-24 13:03:24

标签: 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     65200

我在deptid和usrname这两列上有unique_index。 没有两行可以将deptid和usrname放在一起。

现在我有另一个包含一些数据的表,我想在现有表中插入数据。 以这种方式从tbl_new插入到tbl_old的数据 如果deptid和usrname组合相同,则tbl_new中的行应替换旧行。 如果数据不存在,则应插入。

实际上还有其他几个像usramount这样的栏目,我在这里没有提到过。 tbl_old有200万条记录,tbl_new有50万条记录。 请建议一个可以运行得最快的mysql查询。

1 个答案:

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