SQL 将两张包含相同字段和不同字段的表数据合并成一张表

此为SQL案例:将两张具备相同字段,有一部分字段不相同的两张表获取查询结果为整合之后的。

两张表
table1
在这里插入图片描述

table2

table2
我想要将两者的数据进行合并达到如下的效果:
在这里插入图片描述
这里限制条件有两个分别是date,code 两个,只有当两者都对应上才能达到我想要的效果。于是我绞尽脑汁也想不出来该如何去解决问题。
于是乎,我又重新回到了起点。(我跑去看菜鸟教程了)
可能是我原来没仔细看吧,终于让我发现了一个解决问题的方式,果然回归原始的基础,还是能解决很多问题的。
菜鸟教程
在这里插入图片描述
我先把table1的所有数据和table2 的与table1中有共同限制条件的数据查询出来。

SELECT
	t1.date,
	t1.NAME,
	t1.CODE,
	t1.times,
	t2.times1 
FROM
	table1 t1
	LEFT JOIN table2 t2 ON t1.CODE = t2.CODE

然后再使用is null 去筛选出table2 中既不属于table2 也不属于table1 的数据。

SELECT
	t2.date,
	t2.NAME,
	t2.CODE,
	t1.times,
	t2.times1 
FROM
	table1 t1
	RIGHT JOIN table2 t2 ON t1.CODE = t2.CODE 
WHERE
	t1.CODE IS NULL

最后再把所有的数据Union成一张中间表,然后再从这张中间表中查询出想要的数据。

SELECT date,name,code,times,times1 FROM ((
		SELECT
			t1.date,
			t1.NAME,
			t1.CODE,
			t1.times,
			t2.times1 
		FROM
			table1 t1
			LEFT JOIN table2 t2 ON t1.CODE = t2.CODE
UNION
		SELECT
			t2.date,
			t2.NAME,
			t2.CODE,
			t1.times,
			t2.times1 
		FROM
			table1 t1
			RIGHT JOIN table2 t2 ON t1.CODE = t2.CODE 
		WHERE
			t1.CODE IS NULL
)) AS temp ORDER BY date

最终得到的结果就是我想要的:
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踏雪须眉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值