MsSQL   发布时间:2022-05-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了SQLSERVER中如何快速比较两张表的不一样大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

一般来说,如何检测两张表的内容是否一致,体现在复制的时候发布端和订阅端的两端的数据上面@H_675_9@

我这里罗列了一些如何从数据库层面来解决此类问题的方法@H_675_9@


第一步当然就是检查记录数是否一致,否则不用想其他方法了~
这里我们用两张表t1_old,t1_new来演示@H_675_9@


方法介绍@H_675_9@

 @H_675_9@

方法一:老老实实看表结构和表记录数,弊端是根本看不到两张表的数据是否一致,只是看到表结构和记录数是否一致@H_675_9@

--表结构:
 CREATE TABLE t1_old (
  id int NOT NULL,log_time datetiR_725_11845@E DEFAULT ''
) ;
TABLE t1_new ( id '' ) ; 两表的记录数都为100条。 SELEct count(*) from t1_old; from t1_new;

方法二:加法去重 union 运算符排除重复的,但是有bug,在某些情形下不能简单表示结果集一致,相当于无效@H_675_9@

由于Union 本身具备把上下两条连接的记录做唯一性排序,所以这样检测起来比较简单@H_675_9@

SELECT COUNT(*) FROM ( SELECT * FROM [t1_old] UNION t1_new] ) AS T; INSERT INTO dbo].] ( id],log_time] ) VALUES(1,0); font-size:12px!important">''),(3,0); font-size:12px!important">4,0); font-size:12px!important">'') 2,255); font-size:12px!important">SELECT * FROM ] ] AS T;

两表数据@H_675_9@

SQLSERVER中如何快速比较两张表的不一样@H_675_9@@H_675_9@@H_675_9@

查询出来的结果是4@H_675_9@

SQLSERVER中如何快速比较两张表的不一样@H_675_9@@H_675_9@@H_675_9@

方法三:EXCEPT  减法归零@H_675_9@

EXCEPT AS T; ]

SQLSERVER中如何快速比较两张表的不一样@H_675_9@@H_675_9@@H_675_9@

这里检测出来结果不对,那么就直接给出不一致的结论@H_675_9@

方法四:用全表INNER JOIN,这个也是最烂的做法,当然这里指的是在表记录数超级多的情况下@H_675_9@

DECLARE @t1_newcount BIGINT @count BIGINT SELECT @t1_newcount = FROM t1_new; @count FROM ] AS a INNER JOIN AS b ON b] a] AND 如果表中还有其他字段的自行添加 PRINT @count @t1_newcount IF ( = @t1_newcount ) BEGIN 'equal' END ELSE BEGIN not equal' END

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

SQLSERVER中如何快速比较两张表的不一样@H_675_9@@H_675_9@@H_675_9@

SQLSERVER中如何快速比较两张表的不一样@H_675_9@@H_675_9@@H_675_9@

identical是相等的意思@H_675_9@

SQLSERVER中如何快速比较两张表的不一样@H_675_9@@H_675_9@@H_675_9@

方法六:借助发布端的验证订阅功能,验证订阅端跟发布端的数据是否一致@H_675_9@

SQLSERVER中如何快速比较两张表的不一样@H_675_9@@H_675_9@@H_675_9@

SQLSERVER中如何快速比较两张表的不一样@H_675_9@@H_675_9@@H_675_9@

方法七:用checksum校验,比较两张表里的内容的checksum值是否一致@H_675_9@

但是这种方法也只局限于两表结构一摸一样@H_675_9@

我把[t1_new]表的数据复制到一张新的表以便进行比较@H_675_9@

t1_newreplica] SELECT SUM(checKSUM(*)) AS checksumvalue

SQLSERVER中如何快速比较两张表的不一样@H_675_9@@H_675_9@

SQLSERVER中如何快速比较两张表的不一样@H_675_9@@H_675_9@@H_675_9@


总结

从上面几种数据库提供的方法来看,用EXCEPT减法来归零相对来说比较可靠,其他的方法比较适合在特定的情形下来检测@H_675_9@

本图文内容来源于网友网络收集整理提供,作为学习参使用,版权属于原作者。
编程之家官方1群(满)
编程之家官方2群(满)
编程之家官方3群(满)
编程之家官方4群
编程之家官方5群(新)

大佬总结

以上是大佬教程为你收集整理的SQLSERVER中如何快速比较两张表的不一样全部内容,希望文章能够帮你解决SQLSERVER中如何快速比较两张表的不一样所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:一般来说