Udostępnij za pośrednictwem


Kwalifikowanie nazwy kolumny podkwerend

W poniższym przykładzie CustomerID kolumna w klauzula WHERE kwerendy zewnętrzne kwalifikuje się niejawnie przez nazwę tabela w zewnętrznej kwerendy z klauzula, Sales.Store.Odniesienie do CustomerID liście select podzapytanie jest kwalifikowana podzapytanie z klauzula, oznacza to, przez Sales.Customer tabela.

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

Ogólną zasadą jest, że nazwy kolumn w instrukcja są niejawnie kwalifikacje w tabela w klauzula FROM, w tym samym poziom.Jeśli kolumna nie istnieje w tabela w klauzula FROM podzapytanie, jest niejawnie kwalifikacje w tabela w klauzula FROM, zewnętrznej kwerendy.

Oto jak wygląda kwerendy z tych niejawna założenia, określone:

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

Nigdy nie jest niewłaściwy wyraźnie Nazwa tabela i zawsze jest możliwe zastąpienie niejawna założenia dotyczące nazw tabel z kwalifikacjami jawne.

PrzestrogaPrzestroga

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.