T-SQL"<> ANY(子查询)"

Eri*_*dke 8 sql-server

我对Any-Operator有疑问.

在Technet上它说

例如,以下查询查找位于未被任何销售人员覆盖的区域中的客户.

Use AdventureWorks2008R2;
GO
SELECT
    CustomerID
FROM
    Sales.Customer
WHERE
    TerritoryID <> ANY
    (
        SELECT
            TerritoryID
        FROM
            Sales.SalesPerson
    );
Run Code Online (Sandbox Code Playgroud)

进一步

结果包括所有客户,但销售区域为NULL的客户除外,因为分配给客户的每个区域都由销售人员承保.内部查询查找销售人员所涵盖的所有销售区域,然后,对于每个区域,外部查询查找不在一个区域内的客户.

但该查询返回所有客户.我将客户TerritoryID更新为没有sales.person的值,但该查询仍返回所有客户,而不是我期望的客户.

我错过了什么吗?可能那篇关于technet的文章完全错了吗? https://technet.microsoft.com/de-de/library/ms187074 ( v= sql.105) .aspx(德语)

有一个客户的TerritoryID = 13

内部查询结果(SELECT TerritoryID FROM Sales.SalesPerson):4 2 4 3 6 5 1 4 6 1 1 6 9 1 8 10 7

在表中,Sales.Customer是CustomerID = 13的行,这是销售人员未涵盖的行.

Bou*_*uke -1

以下查询具有相同的结果:

SELECT CustomerID FROM Sales.Customer
WHERE TerritoryID NOT IN (SELECT TerritoryID FROM Sales.SalesPerson)
Run Code Online (Sandbox Code Playgroud)