MySQL合并表具有不同的结构

时间:2009-11-25 19:55:01

标签: php mysql merge merging-data

我有两个结构不同的数据库。

表1:

ch_code    ch_def    ch_weight

表2:

address    ch_code

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

ch_code    ch_def    ch_weight    address

两个表中的数字或行有所不同(表1有更多数据)。

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

谢谢!

2 个答案:

答案 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)

这是一个应该处理三种可能情况的解决方案:

  1. t1中的ch_code值不在t2
  2. t2中的ch_code值不在t1
  3. t1和t2都有ch_code值
  4. 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。