龙空技术网

Excel零基础学SQL25:两表对比,找相同和不同,合并两表

套路Excel 532

前言:

如今朋友们对“数据比对sql怎么写出来的数据不一样”可能比较重视,咱们都想要知道一些“数据比对sql怎么写出来的数据不一样”的相关资讯。那么小编同时在网络上网罗了一些关于“数据比对sql怎么写出来的数据不一样””的相关资讯,希望咱们能喜欢,朋友们一起来学习一下吧!

1、两表字母相同的数据

select a.字母,a.数值 from

[sheet4$a1:b] a,

[sheet4$d1:e] b

where a.字母=b.字母

select a.字母,a.数值 from

[sheet4$a1:b] a

inner join

[sheet4$d1:e] b

on a.字母=b.字母

2、表1独有的数据

2.1、in用法

select * from [sheet4$a1:b]

where 字母 not in

(select a.字母 from [sheet4$a1:b] a inner join [sheet4$d1:e] b on a.字母=b.字母)

(select a.字母 from [sheet4$a1:b] a inner join [sheet4$d1:e] b on a.字母=b.字母)

提取两表共有的字母,A/B/C

然后用not in筛选。

2.2、exists用法

select a.* from [sheet4$a1:b] a

where not exists

(select 字母 from [sheet4$d1:e] b where a.字母=b.字母)

exists用法和in类似,(select 字母 from [sheet4$d1:e] b where a.字母=b.字母)提取共同的字母。

但exists返回的并不是具体的数据,而是TRUE OR FALSE。

字母A存在共有字母A/B/C中,返回FALSE,不同符合条件,不提取数据;

......

字母D不存在共有字母A/B/C中,返回TRUE,符合条件,提取数据;

字母E不存在共有字母A/B/C中,返回TRUE,符合条件,提取数据;

字母F不存在共有字母A/B/C中,返回TRUE,符合条件,提取数据;

2.3、链接用法

select a.* from

[sheet4$a1:b] a

left join

[sheet4$d1:e] b

on a.字母=b.字母

where b.数值 is null

该代码首先会生成下面的表格,尽管select a.*后面没有写成select a.*,b.*提取表b的字段,只是我们没有用select提取表b字段而已,并非不存在。

然后用where b.数值 is null筛选一下数据便得出结果:

表2独有的数据同样操作。

3、两表所有数据,在Excel中的SQL没有全外链接full join。

3.1、分别left join或right join

select a.*,b.数值 from

[sheet4$a1:b] a

left join

[sheet4$d1:e] b

on a.字母=b.字母

select a.数值,b.* from

[sheet4$a1:b] a

right join

[sheet4$d1:e] b

on a.字母=b.字母

3.2、使用union上下合并两表,将*张开成字段,并将字段对应好。

select a.字母,a.数值,b.数值

from [sheet4$a1:b] a left join [sheet4$d1:e] b on a.字母=b.字母

union

select b.字母,a.数值,b.数值

from [sheet4$a1:b] a right join [sheet4$d1:e] b on a.字母=b.字母

标签: #数据比对sql怎么写出来的数据不一样