链接服务器NOT IN查询混乱



假设我在Products表中有100个项目,当我运行:

select * from Products where Status='New' and Product_GUID COLLATE DATABSE_DEFAULT IN (
SELECT Product_GUID COLLATE DATABASE_DEFAULT FROM [OracleLinkedServer]..[MAINDB].[VIEW_PRODUCTS]
)

我在结果中得到50项。

但当我跑不像这样

select * from Products where Status='New' and Product_GUID COLLATE DATABSE_DEFAULT NOT IN (
SELECT Product_GUID COLLATE DATABASE_DEFAULT FROM [OracleLinkedServer]..[MAINDB].[VIEW_PRODUCTS]
)

我没有得到任何项目回来,我期望得到的是在以前的in查询中没有返回的项目,我在哪里出错了?排序有问题吗?

同样,第一个查询需要一段时间才能返回,因为它要发送到链接服务器,但第二个查询立即返回,就好像它没有尝试从链接服务器获取数据一样。链接的服务器为Oracle。谢谢你的帮助。

可能是下列之一。

    子查询返回NULL
  1. [OracleLinkedServer]..[MAINDB].[VIEW_PRODUCTS]不包含名为Product_GUID的列,因此从外部作用域解析。

(我猜是从你的描述第二个)

最新更新