本人菜鸟,请问如何对比这2个表里面的差异

时间:2021-06-13 14:53:34
本人菜鸟,请问如何对比这2个表里面的差异

比如A表里面的sortname和b表里面的typename ,怎么比对出 A表有的,B表没有。。A表没有的,B表有。。 还有score的差异

6 个解决方案

#1


借助SQLSERVER自带的tablediff工具,当初微软制作这个工具的目的就是用于比较复制中发布表和订阅表的数据一致

这个对你应该有帮助:
http://www.cnblogs.com/lyhabc/p/4176269.html

#2



select * from a except select * from b

差异(Except)

就是两个集中不重复的部分。例如

SELECT * FROM A

EXCEPT

SELECT * FROM B

这个的意思是,凡是不出现在B表中的A表的行。


如果要比较score的差异:
可以直接写select查询语句,比较score的值
select  score from 表1
select  typescore from 表2

#3


in

not in 
可以实现了。

#4


可以考虑使用一个 full join ,没有的数据全为 NULL。

#5


select * from tablea a left outer join tableb b on a.xx=b.xx where b.xx is null
select * from tableb a left outer join tablea b on a.xx=b.xx where b.xx is null

SQL语句大概这样写。试试看。

#6


******************* 把两个表合成一个表
select sortname as name,'A' as type from A表 group by sortname
UNION ALL
select typename as name,'B' as type from B表 group by typename

********************计算数据数量
SELECT name, COUNT(name) AS 数量
FROM ???
GROUP BY name
**********************************
上面两条命令可以实现你想要的功能,怎么合成一条命令你自己想吧~~

#1


借助SQLSERVER自带的tablediff工具,当初微软制作这个工具的目的就是用于比较复制中发布表和订阅表的数据一致

这个对你应该有帮助:
http://www.cnblogs.com/lyhabc/p/4176269.html

#2



select * from a except select * from b

差异(Except)

就是两个集中不重复的部分。例如

SELECT * FROM A

EXCEPT

SELECT * FROM B

这个的意思是,凡是不出现在B表中的A表的行。


如果要比较score的差异:
可以直接写select查询语句,比较score的值
select  score from 表1
select  typescore from 表2

#3


in

not in 
可以实现了。

#4


可以考虑使用一个 full join ,没有的数据全为 NULL。

#5


select * from tablea a left outer join tableb b on a.xx=b.xx where b.xx is null
select * from tableb a left outer join tablea b on a.xx=b.xx where b.xx is null

SQL语句大概这样写。试试看。

#6


******************* 把两个表合成一个表
select sortname as name,'A' as type from A表 group by sortname
UNION ALL
select typename as name,'B' as type from B表 group by typename

********************计算数据数量
SELECT name, COUNT(name) AS 数量
FROM ???
GROUP BY name
**********************************
上面两条命令可以实现你想要的功能,怎么合成一条命令你自己想吧~~