다음을 통해 공유


하위 쿼리의 열 이름 한정

다음 예제에서는 외부 쿼리의 WHERE 절에 있는 CustomerID 열이 외부 쿼리의 FROM 절에 있는 테이블 이름 Sales.Store로 암시적으로 한정됩니다. 하위 쿼리의 SELECT 목록에서 CustomerID에 대한 참조는 하위 쿼리의 FROM 절, 즉 Sales.Customer 테이블로 한정됩니다.

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

일반적으로 문의 열 이름은 같은 수준의 FROM 절에서 참조하는 테이블로 암시적으로 한정됩니다. 하위 쿼리의 FROM 절에서 참조하는 테이블에 없는 열은 외부 쿼리의 FROM 절에서 참조하는 테이블로 암시적으로 한정됩니다.

다음은 이러한 암시적 한정이 지정된 쿼리입니다.

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

테이블 이름을 명시적으로 지정해도 되며 언제든지 명시적 한정으로 테이블 이름에 대한 암시적 한정을 무시할 수 있습니다.

주의 사항주의

하위 쿼리에서 참조하는 열이 하위 쿼리의 FROM 절에서 참조하는 테이블에는 없지만 외부 쿼리의 FROM 절에서 참조하는 테이블에는 있는 경우 쿼리가 오류 없이 실행됩니다. SQL Server는 외부 쿼리의 테이블 이름으로 하위 쿼리의 열을 암시적으로 한정합니다.