Udostępnij za pośrednictwem


Qualifying Column Names in Subqueries

W poniższym przykładzie CustomerID kolumna w klauzula WHERE kwerendy zewnętrzne kwalifikuje się niejawnie przez nazwę tabela w zewnętrznej kwerendy FROM, Sales.Store. Odwołanie do CustomerID na liście select podkwerenda kwalifikuje się przez jego podkwerenda FROM klauzula, to znaczy przez Sales.Customer Tabela.

USE AdventureWorks;
GO
SELECT Name
FROM Sales.Store
WHERE CustomerID NOT IN
    (SELECT CustomerID
     FROM Sales.Customer
     WHERE TerritoryID = 5)

Ogólną zasadą jest, że kolumna nazw w instrukcja niejawnie są kwalifikowane w tabeli w klauzula FROM na tym samym poziomie.Jeśli kolumna nie tabela, której dotyczy odwołanie w klauzula FROM podkwerenda, jest niejawnie kwalifikowane w tabela w klauzula FROM kwerendy zewnętrzne.

Poniżej opisano, jak wygląda kwerenda z tych niejawna założenia określone:

USE AdventureWorks;
GO
SELECT Name
FROM Sales.Store
WHERE Sales.Store.CustomerID NOT IN
    (SELECT Sales.Customer.CustomerID
     FROM Sales.Customer
     WHERE TerritoryID = 5)

Nigdy nie jest nieprawidłowe określenie nazwy tabela jawnie, i zawsze jest możliwe do zastąpienia niejawna założenia dotyczące nazw tabel z kwalifikacjami jawne.

Ostrzeżenie

If a column is referenced in a subquery that does not exist in the table referenced by the subquery's FROM clause, but exists in a table referenced by the outer query's FROM clause, the query executes without error.SQL Server implicitly qualifies the column in the subquery with the table name in the outer query.