MySQL合并不同结构的表
我有两个不同结构的数据库。MySQL合并不同结构的表
表1:
ch_code ch_def ch_weight
表2:
address ch_code
我需要合并这两个表,所以结构看起来像:
ch_code ch_def ch_weight address
数量或行在两个表中是不同的(表1有更多的数据)。
我应该使用merge
,union
..别的吗?
谢谢!
这里的应处置三种可能的情况的解决方案:
- 有一个在T1一ch_code值,这不是在T2
- 有一个在T2中的ch_code值,这不是在T1
- 有一个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如果你有一个新表对住房的合并数据。
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)。
那么,这取决于你想要什么在结果表... 这可能会帮助,如果你添加一些示例数据。 – 2009-11-25 19:58:39
只是为了澄清,你的意思是你在同一个数据库中有两个表,并且正在寻找一个将导致你所指示的列的查询? – tloach 2009-11-25 19:59:16
是否有与表关联的列?例如,表示两个表中相同行的person_id。 – wallyk 2009-11-25 20:02:05