我有两个结构不同的数据库。
表格1:
ch_code ch_def ch_weight
表 2:
address ch_code
我需要合并这两个表,所以结构如下:
ch_code ch_def ch_weight address
两个表中的行数或行数不同(表 1 数据较多)。
我应该使用merge
, union
.. 别的东西吗?
谢谢!
我有两个结构不同的数据库。
表格1:
ch_code ch_def ch_weight
表 2:
address ch_code
我需要合并这两个表,所以结构如下:
ch_code ch_def ch_weight address
两个表中的行数或行数不同(表 1 数据较多)。
我应该使用merge
, union
.. 别的东西吗?
谢谢!
如果 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)。
Here's a solution which should handle the three possible cases:
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
Once you've obtained that resultset then you may do your INSERT INTO if you have a new table for housing the merged data.