sql - 计算不匹配的行数

标签 sql sql-server

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

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

最佳答案

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

SQL Fiddle

关于sql - 计算不匹配的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18700703/

相关文章:

mysql - 如何将 mysql 查询转换为 laravel 查询生成器?

mysql - 无法通过 SSH 使用 Java 连接到 MySQL 数据库

sql - varchar 值的转换溢出了 int 列

sql-server - 带有 Oracle 11g 的 SSIS CDC

c# - 如何在单个事务中将文件写入磁盘并插入数据库记录?

sql - 为什么内部加入过滤表比没有过滤的表慢?

c# - 如何使用C#在T-SQL脚本中转换中文单词(下午/上午)的数据格式(基于SQL Server中文版)

sql - 将多个 csv 文件从 Blob 容器批量复制到 Azure SQL 数据库

sql - 如何检查 SQL Server 中的 IDENTITY_INSERT 设置为 ON 还是 OFF?

sql-server - 如何在不需要安装 SQL Server 的 Visual Studio 2013 上创建 LocalDB