내부 조인 사용
내부 조인은 조인되는 열의 값이 비교 연산자를 사용하여 비교되는 조인입니다.
SQL-92 표준에서 내부 조인은 FROM 또는 WHERE 절에서 지정할 수 있습니다. 내부 조인은 SQL-92가 WHERE 절에서 유일하게 지원하는 조인 유형입니다. WHERE 절에 지정된 내부 조인은 구식 내부 조인입니다.
다음 Transact-SQL 쿼리는 내부 조인의 예입니다.
USE AdventureWorks;
GO
SELECT *
FROM HumanResources.Employee AS e
INNER JOIN Person.Contact AS c
ON e.ContactID = c.ContactID
ORDER BY c.LastName
이러한 내부 조인을 동등 조인이라고 하며 양쪽 테이블의 모든 열을 반환하고 조인 열에서 동일한 값이 있는 행만 반환합니다.
등호가 아닌 연산자를 사용하는 조인
동일하지 않은 두 열의 값을 조인할 수도 있습니다. 내부 조인에서 사용하는 연산자와 조건자를 비동등 조인에서도 사용할 수 있습니다. 사용 가능한 연산자와 조인에 사용할 수 있는 조건자에 대한 자세한 내용은 식에서 연산자 사용 및 WHERE(Transact-SQL)를 참조하십시오.
다음 예에서는 보다 작음 (<
) 조인을 사용하여 제품 718
의 권장 가격보다 낮은 판매 가격을 찾습니다.
USE AdventureWorks;
GO
SELECT DISTINCT p.ProductID, p.Name, p.ListPrice, sd.UnitPrice AS 'Selling Price'
FROM Sales.SalesOrderDetail AS sd
JOIN Production.Product AS p
ON sd.ProductID = p.ProductID AND sd.UnitPrice < p.ListPrice
WHERE p.ProductID = 718;
GO
결과 집합은 다음과 같습니다.
ProductID Name ListPrice Selling Price
----------- --------------------------- ------------------ -------------
718 HL Road Frame - Red, 44 1431.5000 758.0759
718 HL Road Frame - Red, 44 1431.5000 780.8182
718 HL Road Frame - Red, 44 1431.5000 858.90
(3 row(s) affected)
같지 않음 연산자를 사용하는 조인
같지 않음 조인(<>)은 매우 드물게 사용됩니다. 일반적으로 같지 않음 조인은 자체 조인과 함께 사용할 때만 의미가 있습니다. 예를 들어 다음의 같지 않음 Transact-SQL 조인과 자체 조인은 $15
미만의 서로 다른 가격이 둘 이상 있는 하위 범주를 찾습니다.
USE AdventureWorks;
GO
SELECT DISTINCT p1.ProductSubcategoryID, p1.ListPrice
FROM Production.Product p1
INNER JOIN Production.Product p2
ON p1.ProductSubcategoryID = p2.ProductSubcategoryID
AND p1.ListPrice <> p2.ListPrice
WHERE p1.ListPrice < $15 AND p2.ListPrice < $15
ORDER BY ProductSubcategoryID;
[!참고] NOT column_name = column_name 식은 column_name <> column_name과 같습니다.
다음 Transact-SQL 예에서는 같지 않음 조인과 자체 조인을 함께 사용하여 ProductVendor
테이블에서 ProductID
는 같지만 VendorID
번호가 다른 둘 이상의 행(공급업체가 여럿인 제품)을 모두 검색합니다.
USE AdventureWorks;
GO
SELECT DISTINCT p1.VendorID, p1.ProductID
FROM Purchasing.ProductVendor p1
INNER JOIN Purchasing.ProductVendor p2
ON p1.ProductID = p2.ProductID
WHERE p1.VendorID <> p2.VendorID
ORDER BY p1.VendorID
참고 항목
개념
관련 자료
WHERE(Transact-SQL)
SELECT 예(Transact-SQL)
SELECT(Transact-SQL)