将MySQL中的2个表与一些重复数据合并

时间:2013-04-20 19:13:46

标签: mysql

我需要合并两个具有相同结构的表table1table2。它们主要有不同的行,但有些行是重复的。

有没有办法将table2合并到table1中,但在1个语句中省略了重复记录?

我对MySQL很新,任何帮助都会非常感激。

编辑:我到目前为止的查询就是这样:

INSERT INTO table1
SELECT *
FROM table2

所以我不知道如何有选择地省去重复项。

2 个答案:

答案 0 :(得分:3)

如果您只想要结果:

select * from table1 union select * from table2;

联盟将删除重复项。

如果要创建包含结果的新表:

create table merged_table
    select * from a1.t1 
    union 
    select * from a2.t1;

然后你可以:

drop table table1;
rename table merged_table to table1;

(当其他查询正在或可能正在访问时,请不要删除该表。)

答案 1 :(得分:2)

您可以尝试INSERT SELECT,以便将table2合并到table1

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] table2 [(col_name,...)]
    SELECT * FROM table1
    [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]

link:http://dev.mysql.com/doc/refman/5.1/en/insert-select.html