横向合并mysql表

将多个带有相同字段的mysql数据表进行横向合并
横向合并mysql表_第1张图片
横向合并mysql表_第2张图片

我现在想做的就是将相同id和code的字段进行横向合并,因为左右表都可能不全,所以左连接右连接都不符合我的要求
只能用全连接,变成如下的效果,缺的地方为null
横向合并mysql表_第3张图片

我的步骤如下,如有大佬有更好的方法,请留下你的脚印,小弟我不胜感激

– CREATE TABLE test11 as
– SELECT * FROM test a left join test_copy b on a.id=b.id1 and a.code=b.code1
– union
– SELECT * from test a RIGHT JOIN test_copy b on a.id=b.id1 and a.code=b.code1;

这里前后的表名中的字段名字得不同,比如前一个是id,后一个我就改为id1,不然会报重复的错误,将相同字段的改为不同就好

--------------------分割线----------------------------------------------------------------------------------
第一条语句呢,是创建全连接后的表,因为这样创建出来后,会产生俩个相同字段的表,虽然字段不能重复,但是内容是重复的,
横向合并mysql表_第4张图片
所以得将多余的删掉,同时得保留一个字段

– UPDATE test11 set id=id1 ,code=code1 WHERE id1 is not null and code1 is not NULL;
--------------------分割线----------------------------------------------------------------------------------
第二条语句呢,是为了将左右的id合成一个,因为同一个id在前一个表可能没有数据,在后一个表的时候可能有数据,所以不能直接删掉这俩字段,得先保留好,最后在删除没用的字段列

– alter TABLE test11 DROP column id1 ,drop code1;
--------------------分割线----------------------------------------------------------------------------------
删除重复的字段

最后的结果就如图所示了
横向合并mysql表_第5张图片

你可能感兴趣的:(mysql)