横向合并mysql表

本文介绍了如何在MySQL中使用全连接合并具有相同字段的多个数据表,详细步骤包括更改字段名称以避免冲突,创建全连接表,更新并删除冗余字段,最终达到横向合并的效果。文中提到,当左连接和右连接无法满足需求时,全连接是一种解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将多个带有相同字段的mysql数据表进行横向合并
第一个测试表
第二个测试表

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

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

– 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,不然会报重复的错误,将相同字段的改为不同就好

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

– 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;
--------------------分割线----------------------------------------------------------------------------------
删除重复的字段

最后的结果就如图所示了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值