使用一些重复的条目更新MySQL表

时间:2014-02-20 16:35:40

标签: mysql sql

我有两张桌子:

表1

Column 1 |  Column 2 |  Column 3
---------------------------------
1        |  a        |  10
         |           |
3        |  g        |  30
         |           |
5        |  f        |  50
         |           |
7        |  f        |  70

表2

Column 1 |  Column 2 |  Column 3
---------------------------------
10       |  bb       |  30

50       |  cc       |  40

现在,我需要将行从table 2复制到table 1

问题是:

如果column 3中已存在table 1中的任何条目。 Column 3,然后来自column 1的{​​{1}}和column 2使用来自table 1的数据进行更新。不存在的行只是添加在表的末尾。

2 个答案:

答案 0 :(得分:2)

column1column2上的表1中创建唯一索引:

create unique index table1_column1_column2 on table1(column1, column2);

然后使用insert on duplicate key update

insert into table1(column1, column2, column3)
    select column1, column2, column3
    from table2
    on duplicate key update column3 = table2.column3;

答案 1 :(得分:0)

要更新Column1Column2,如果Column3的记录存在,则添加新记录,请使用:

CREATE UNIQUE INDEX Table1Column3 on Table1(Column3);

INSERT INTO Table1(Column1, Column2, Column3)
SELECT Column1, Column2, Column3
FROM Table2
ON DUPLICATE KEY UPDATE Column1 = Table2.Column1, Column2 = Table2.Column2