前言:
如今朋友们对“数据比对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怎么写出来的数据不一样