我有两个结构不同的数据库。
表1:
ch_code ch_def ch_weight
表2:
address ch_code
我需要合并这两个表,所以结构看起来像:
ch_code ch_def ch_weight address
两个表中的数字或行有所不同(表1有更多数据)。
我应该使用merge
,union
......别的吗?
谢谢!
答案 0 :(得分:1)
如果Table2只包含Table1中包含的数据(即Table2中没有任何内容不在Table1中),您应该可以执行类似的操作(假设已经设置了Table3):
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安装,所以你的具体语法会有所不同。)
如果Table2中的数据与Table1中的数据不匹配(并且您希望保留该数据),则需要一个FULL JOIN(如果MySQL不支持,UNION LEFT JOIN和RIGHT JOIN) )。
答案 1 :(得分:1)
这是一个应该处理三种可能情况的解决方案:
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。