此为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

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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐