Share via


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