此为SQL案例:将两张具备相同字段,有一部分字段不相同的两张表获取查询结果为整合之后的。
两张表
table1
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
最终得到的结果就是我想要的: