Iç kullanarak birleşimler
Bir iç birleştirmekk bir birleştirmekk, bir karşılaştırma işleç kullanarak, birleştirilmiş sütun değerleri karşılaştırılır.
İç birleşimler ya da FROM ISO standart belirtilebilir veya WHERE yan tümce.Bu yalnızca nerede ISO destekleyen birleştirmek türünü, yan tümce.İç birleşimler, WHERE yan tümcesinde gibi eski stil İç birleşimler bilinen belirtti.
AşağıdakiTransact-SQLsorgu örneği olan bir iç birleştirmek:
USE AdventureWorks;
GO
SELECT *
FROM HumanResources.Employee AS e
INNER JOIN Person.Contact AS c
ON e.ContactID = c.ContactID
ORDER BY c.LastName
Bu bir iç birleştirmek, bir eş birleştirmek bilinir.Her iki tabloda tüm sütunları verir ve yalnızca kendisi için yok değerine eşit birleştirmek sütun satır döndürür.
Farklı eşittir işleçleri kullanarak birleştirir
Eşit olmayan iki sütun değerleri de birleştirebilirsiniz.İşleçler ve İç birleşimler için kullanılan koşullarına değil eşit birleşim için kullanılabilir.Yüklemler, birleşimlerde kullanılabilir ve kullanılabilir işleçler hakkında daha fazla bilgi için bkz:İfadelerde İşleçleri KullanmaveWHERE (Transact-SQL).
Aşağıdaki örnek, bir daha az kullanır - den ( <) ürün satış fiyatlarını bulmak için birleştirmek718Önerilen bu ürün. liste fiyatını daha az olan
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
Here is the result set.
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)
Not eşit işleç kullanarak birleştirir
Değil eşit birleştirmek ( <>) çok seyrek kullanılır.Genel bir kural olarak değil eşit birleştirmek iç birleştirmek ile kullanılması, anlamlı.Örneğin, bu değil-eşittirTransact-SQLbirleştirmek ve iç birleştirmek öğeler en az iki farklı fiyatlara sahip alt kategorileri bulmak için kullanılan küçük$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
The expression NOT column_name = column_name is equivalent to column_name <> column_name.
AşağıdakiTransact-SQLörnek değil eşit birleştirmek iç birleştirmek ile birlikte tüm satırları bulmak için kullandığıProductVendoriki veya daha çok hangi satırların bir tabloda aynı olmasıProductIDancak farklıVendorID(yani, birden çok satıcıya ürünler) sayı:
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