2012-02-08 88 views
1

我有8個表,並且所有表具有完全相同的結構。在每個表的第1列是ID,它的INT,主鍵,自動遞增合併具有不同信息的完全相同的MySQL表

會正確的事情是創建一個第九表具有相同的結構等8個,然後INSERT * FROM table1, table2, table3, table4, table5, table6, table7 table8 INTO table9 EXCEPT ID

我真的很不確定如何去做這件事。在PHPMyAdmin和MySQL Workbench的幫助下,我花了整整一天的時間從15年的Excel文件中提取數據並手動創建表格。

所以任何提示把這個任務交給了迅速結束,將不勝感激(你的SQL傢伙沒有得到足夠的報酬)

+1

你試過了嗎?你可能一次只能做一個,但這聽起來像是一種合理的方式。我相信你想要的語法被稱爲[Insert-Select](http://dev.mysql.com/doc/refman/5.0/en/insert-select.html)。 – 2012-02-08 06:13:18

回答

2

您正在尋找Insert-Select statementUNION statement

INSERT INTO table9(all, coma, separated, fields, except, id) 
SELECT all, coma, separated, fields, except, id FROM table1 UNION 
SELECT all, coma, separated, fields, except, id FROM table2 UNION 
... 
SELECT all, coma, separated, fields, except, id FROM table8; 
3

事實上正如Sergey建議的那樣,我會選擇插入。

但我不會去一個聯盟。該聯盟文件說:工會

的默認行爲是重複的行從結果

你混合不同的表(甚至消除他們的IDS)去除,所以如果你有這樣的表1:

id | nonIdField_1 | nonIdField_2, etc 
------------------------------------- 
1 | A   | B 

,這在表2

id | nonIdField_1 | nonIdField_2, etc 
------------------------------------- 
5 | A   | B 

其結果將是:

nonIdField_1 | nonIdField_2, etc 
-------------------------------- 
A   | B 

而且我想你想這個(爲了不丟失信息):

nonIdField_1 | nonIdField_2, etc 
-------------------------------- 
A   | B 
A   | B 

所以,你應該使用UNION ALL而不是UNION的。前者不會刪除重複項。

希望這會有所幫助。

+0

嗨,這是一個很好的提示,感謝您尋找那個。我一定會看看我是否失去了任何信息。 – Zrb0529 2012-02-08 06:49:50

相關問題