将具有相同构建的MySQL表与不相同的信息合并

时间:2012-02-08 06:10:58

标签: mysql

我有8个表,所有表都具有完全相同的结构。每个表上的第1列是ID,它是int,主键,自动增量

正确的做法是创建一个与其他8结构相同的第9个表,然后INSERT * FROM table1, table2, table3, table4, table5, table6, table7 table8 INTO table9 EXCEPT ID

我真的很不确定如何去做这件事。在PHPMyAdmin和MySQL Workbench的帮助下,我只花了一整天的时间从15年的Excel文件中提取数据并手工创建表格。

因此,非常感谢任何将此任务快速结束的提示(并且您的SQL员工得不到足够的报酬)

2 个答案:

答案 0 :(得分:3)

确实,我会像谢尔盖建议的那样去插入插入。

但是我不会去UNION。 UNION文件说:

  

UNION的默认行为是从结果中删除重复的行

你正在混合不同的表(甚至删除它们的ID),所以如果你在table1中有这个:

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

,这在table2中

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。前者不会删除重复项。

希望这有帮助。

答案 1 :(得分: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;