6

我有两个结构完全相同的表,即相同的列。我想找出两个表中存在但所有列的匹配值不完全相同的行数。例如,表有列 ID、名称、国家。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
            )  

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

4

2 回答 2

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

SQL小提琴

于 2013-09-09T14:36:24.873 回答
0

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

于 2013-09-09T14:37:37.000 回答