假设我在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。 感谢任何帮助。
答案 0 :(得分:1)
可能是以下之一。
NULL
[OracleLinkedServer]..[MAINDB].[VIEW_PRODUCTS]
不包含名为Product_GUID
的列,因此this is resolved from the outer scope。(我的猜测是你描述中的第二个)