MySQL合并不同结构的表

MySQL合并不同结构的表

问题描述:

我有两个不同结构的数据库。MySQL合并不同结构的表

表1:

ch_code ch_def ch_weight 

表2:

address ch_code 

我需要合并这两个表,所以结构看起来像:

ch_code ch_def ch_weight address 

数量或行在两个表中是不同的(表1有更多的数据)。

我应该使用mergeunion ..别的吗?

谢谢!

+0

那么,这取决于你想要什么在结果表... 这可能会帮助,如果你添加一些示例数据。 – 2009-11-25 19:58:39

+0

只是为了澄清,你的意思是你在同一个数据库中有两个表,并且正在寻找一个将导致你所指示的列的查询? – tloach 2009-11-25 19:59:16

+0

是否有与表关联的列?例如,表示两个表中相同行的person_id。 – wallyk 2009-11-25 20:02:05

这里的应处置三种可能的情况的解决方案:

  1. 有一个在T1一ch_code值,这不是在T2
  2. 有一个在T2中的ch_code值,这不是在T1
  3. 有一个ch_code在T1和T2值

SELECT t1.ch_code, t1.ch_def, t1.ch_weight, '' as address from t1 where not exists (select * from t2 where t2.ch_code = t1.ch_code)

UNION

SELECT t2.ch_code, '' as ch_def, '' as ch_weight, t2.address from t2 where not exists (select * from t1 where t1.ch_code = t2.ch_code)

UNION

SELECT t1.ch_code, t1.ch_def, t1.ch_weight, t2.ch.address from t1 left join t2 on t1.ch_code = t2.ch_code

一旦你获得的结果集,那么你可以做你的INSERT INTO如果你有一个新表对住房的合并数据。

+0

PS - 任何人都知道获取包含下划线看起来正确的多行代码块的秘密吗?我不得不在每条线上安排反攻。 – BryanD 2009-11-25 20:17:36

如果表2只具有随机配备在表1(即没有什么表2中,这不是在表1),你应该能够做到像(假设表3已经被设定)数据:

INSERT INTO TABLE3 (ch_code, ch_def, ch_weight, address) 
SELECT Table1.ch_code, Table1.ch_def, Table1.ch_weight, Table2.address 
FROM Table1 LEFT JOIN Table2 on Table1.ch_code = Table2.ch_code 

(我没有安装MySQL,所以你的具体语法不尽相同。)

如果你的表2中的数据与表1中的数据不匹配(并且你想保留这些数据),那么你需要一个FULL JOIN(如果MySQL不支持,UNION是一个LEFT JOIN和RIGHT JOIN)。