2013-04-20 44 views
0

我需要合并2个具有相同结构的表,table1table2。他们大多数行不同,但有些行是重复的。在MySQL中合并2个表与一些重复的数据

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

我很新的MySQL的任何帮助将不胜感激。

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

INSERT INTO table1 
SELECT * 
FROM table2 

所以我不知道该如何选择离开了重复。

+0

我们应该猜到你的查询? – 2013-04-20 19:15:44

+0

@echo_me他谈到一个原则,我认为在他的问题中不需要查询。 – SaidbakR 2013-04-20 19:17:03

+0

@echo_me我不确定查询应该是什么。我到目前为止唯一的事情是'INSERT INTO table1 SELECT * FROM table2',但我不知道如何省略重复的记录。 – 2013-04-20 19:19:54

回答

3

如果你只是想要的结果:

select * from table1 union select * from table2; 

联盟将删除重复。

如果要创建具有一个新表:

create table merged_table(select * from table 1 union select * from table2); 

然后,您可以:

drop table table1; 
rename table merged_table to table1; 

(不要或删除表,而其他的查询都可能)

+0

我该如何得到此检查重复从某些列?每个表格当前都有自己的ID,因此使用ID进行比较不会导致任何重复。 – 2013-04-20 19:34:34

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, ... ] 

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

+0

这是如何处理重复的? – 2013-04-20 19:22:40

+0

@TriNguyen在重复... – SaidbakR 2013-04-20 19:24:40

+0

如果我有这些表的'ID'列到'AUTO_INCREMENT',然后指定为'PRIMARY KEY',有没有办法检查在这个过程中使用其他列重复? – 2013-04-20 19:33:39

相关问题