链接服务器NOT IN查询混乱

时间:2015-08-18 08:36:20

标签: sql tsql sql-server-2012 collation linked-server

假设我在Products表中有100个具有Status =' 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个项目。

但是当我像这样运行NOT IN时

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。 感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

可能是以下之一。

  1. The subquery returns a NULL
  2. [OracleLinkedServer]..[MAINDB].[VIEW_PRODUCTS]不包含名为Product_GUID的列,因此this is resolved from the outer scope
  3. (我的猜测是你描述中的第二个)