2013-04-20 124 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