假设我在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。谢谢你的帮助。
可能是下列之一。
- 子查询返回
-
[OracleLinkedServer]..[MAINDB].[VIEW_PRODUCTS]
不包含名为Product_GUID
的列,因此从外部作用域解析。
NULL
(我猜是从你的描述第二个)