链接服务器不在查询混乱中

Linked server NOT IN query confusion

假设我在产品 table 中有 100 件商品的状态为 'New' 当我 运行:

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 查询中没有 returned 的项目,我哪里出错了?整理有问题吗?

此外,第一个查询需要一段时间 return,因为它要发送到链接服务器,但第二个 return 立即就好像它没有尝试从链接服务器获取数据一样服务器。链接服务器是 Oracle。 感谢任何帮助。

可能是以下之一。

  1. The subquery returns a NULL
  2. [OracleLinkedServer]..[MAINDB].[VIEW_PRODUCTS] 不包含名为 Product_GUID 的列,因此 this is resolved from the outer scope.

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