计算不匹配的行数

时间:2013-09-09 14:34:43

标签: sql sql-server

我有两个具有完全相同结构的表,即相同的列。我想找出两个表中存在的行数,但所有列的匹配值不完全相同。例如。表包含列号,名称,国家/地区。 Id是主键。如果两个表中都存在Id = 1,则其他值也应匹配。目前,我正在使用这种声明。

SELECT  COUNT(*)
FROM    ##Table1 t1 ,
        ##Table2 t2
WHERE   t1.Id = t2.Id
        AND ( t1.Name != t2.name
              OR t1.Country != t2.Country
            )  

表有太多列,因此这变得太过笨拙。有没有更好的方法呢?

2 个答案:

答案 0 :(得分:4)

SELECT COUNT(*)
FROM   ##Table1 t1
       JOIN ##Table2 t2
         ON t1.Id = t2.Id
            AND EXISTS (SELECT t1.*
                        EXCEPT
                        SELECT t2.*) 

SQL Fiddle

答案 1 :(得分:0)

也许你可以将列连接成一个字段并检查这种方式是否相等?