SQL Server中的SQL语句除外,未返回预期结果
我有两个相同的表,但它们位于不同的服务器上。一个表缺少我已验证的一行。我正试着比较这些表格以找到丢失的记录 借 或者反过来SQL Server中的SQL语句除外,未返回预期结果,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有两个相同的表,但它们位于不同的服务器上。一个表缺少我已验证的一行。我正试着比较这些表格以找到丢失的记录 借 或者反过来 SELECT GUID FROM [Server2].MyDatabase.dbo.tableA EXCEPT SELECT GUID FROM dbo.tableA 两个查询都返回零结果。我在两个表上都使用了select count(*),计数不同 我做错了什么 感谢您提前提供的任何反馈计数可以不同,并且除了之外,仍然可以返回零行。怎么用?如果一个或两个表中存在重复项
SELECT GUID FROM [Server2].MyDatabase.dbo.tableA
EXCEPT
SELECT GUID FROM dbo.tableA
两个查询都返回零结果。我在两个表上都使用了select count(*)
,计数不同
我做错了什么
感谢您提前提供的任何反馈计数可以不同,并且除了之外,
仍然可以返回零行。怎么用?如果一个或两个表中存在重复项
以下是一个可以帮助您找到差异的修改:
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
根据我的经验,EXCEPT
操作员在使用链接服务器时无法正常工作。为什么?我不知道
作为一种解决方法,我将远程服务器的行插入本地临时表,然后进行比较:(出于其他原因,我还将本地临时表复制到第二个临时表)
MyDatabase.dbo.tableA.Using not exist caluse中未显示表A值以获取此结果
SELECT GUID
FROM dbo.tableA WHERE NOT EXISTS(SELECT 1
FROM [Server2].MyDatabase.dbo.tableA
WHERE GUID = [Server2].MyDatabase.dbo.tableA.GUID )
当你设置好它时,它取决于顺序,它是基于集合论的
- 2、3、4不带(=除外)3-->设置值2、4
- 3不带2、3、4-->表示空集
- 没有1、2、3的3、3、4(这是您的情况)-->这意味着只设置一个值4
Exception表示从第一个集合中筛选任何行,其中值包含在第二个集合中。查询返回相同的输出,因为表中存在重复的行(具有相同的值)
请不要使用除了/intersect
-使用存在的
,在
或加入
子句中 虽然这可能是一个有效的答案,但您更有可能通过解释代码的功能和工作方式来帮助他人。只有代码的答案往往没有得到积极的关注,也不像其他答案那样有用。
Select GUID
Into #Server2_tblA
From [Server2].MyDatabase.dbo.tableA;
Select GUID
Into #Local_tblA
From dbo.tableA;
Select GUID From #Server2_tblA
Except
Select GUID From #Local_tblA;
...
SELECT GUID
FROM dbo.tableA WHERE NOT EXISTS(SELECT 1
FROM [Server2].MyDatabase.dbo.tableA
WHERE GUID = [Server2].MyDatabase.dbo.tableA.GUID )