除了 SQL Server 中的 SQL 语句未返回预期结果

Joh*_*dan 3 sql t-sql sql-server

我有两个相同但驻留在不同服务器上的表。一个表缺少我已经验证过的一行。我正在尝试比较这些表以查找丢失的记录

经过

SELECT  GUID FROM dbo.tableA
EXCEPT 
SELECT  GUID FROM [Server2].MyDatabase.dbo.tableA
Run Code Online (Sandbox Code Playgroud)

或者反过来

SELECT GUID FROM [Server2].MyDatabase.dbo.tableA
EXCEPT 
SELECT GUID FROM dbo.tableA
Run Code Online (Sandbox Code Playgroud)

两个查询都返回零结果。我select count(*)在两张桌子上都用过,计数不同

我究竟做错了什么?

感谢您提前提供任何反馈

Gor*_*off 6

计数可以不同,但​​仍有可能except返回零行。如何?如果一个或两个表中有重复项。

这是一个可以帮助您找到差异的修改:

SELECT GUID, ROW_NUMBER() OVER (PARTITION BY GUID ORDER BY GUID) as seqnum
FROM dbo.tableA
EXCEPT 
SELECT GUID, ROW_NUMBER() OVER (PARTITION BY GUID ORDER BY GUID) as seqnum
FROM [Server2].MyDatabase.dbo.tableA
Run Code Online (Sandbox Code Playgroud)