比较 SQL Server 表:查找差异的综合指南
识别两个 SQL Server 表之间的数据不一致需要一种方法来查明任一表所独有的行。以下查询有效地实现了这一点:
<code class="language-sql">(SELECT * FROM table1 EXCEPT SELECT * FROM table2) UNION ALL (SELECT * FROM table2 EXCEPT SELECT * FROM table1)</code>
查询细分:
EXCEPT
运算符隔离 table1
中存在但 table2
中不存在的行。UNION ALL
将第一个 EXCEPT
操作的结果与 EXCEPT
上的镜像 table2
操作合并,揭示所有差异。示例:
假设有两个表 TempTestData
和 RealData
,每个表都有列 FirstName
、LastName
和 Product
。要发现这些列中具有不同值的行,请使用以下查询:
<code class="language-sql">(SELECT * FROM TempTestData EXCEPT SELECT * FROM RealData) UNION ALL (SELECT * FROM RealData EXCEPT SELECT * FROM TempTestData)</code>
此查询将返回两个表中任何指定列中表现出变化的所有行。
重要注意事项:
NULL
值的表,与 LEFT JOIN
相比,FULL OUTER JOIN
或 NULL
提供更强大的 EXCEPT
比较处理。以上是如何查找两个 SQL Server 表之间的差异?的详细内容。更多信息请关注PHP中文网其他相关文章!