Udostępnij za pośrednictwem


Sprzężenia wewnętrzne korzystanie

łączyć wewnętrzne Jest łączyć, w którym wartości w kolumnach przyłączeniem są porównywane za pomocą operator porównania.

W standardzie ISO sprzężenia wewnętrzne można określić w polu od albo lub klauzula WHERE.Jest to jedyny typ łączyć, obsługujący ISO w klauzula WHERE.Sprzężenia wewnętrzne określone w klauzula WHERE, są znane jako stary styl sprzężeń wewnętrznych.

Następujące Transact-SQL kwerenda jest przykładem łączyć wewnętrzne:

USE AdventureWorks2008R2;
GO
SELECT *
FROM HumanResources.Employee AS e
    INNER JOIN Person.Person AS p
    ON e.BusinessEntityID = p.BusinessEntityID
ORDER BY p.LastName

łączyć wewnętrzne, to jest znane jako łączyć równoważne.Zwraca wszystkie kolumna sprzężenia sprzężenia w obu tabelach i zwraca tylko wiersze, dla których kolumna sprzężenia sprzężenia łączyć jest równe wartości.

Łączy używając operatorów innych niż równości

Można także łączyć wartości w dwóch kolumnach, które nie są równe.Operatory i predykaty używane dla sprzężenia wewnętrzne samego może służyć do sprzężenia nie równości.Aby uzyskać więcej informacji na temat dostępnych operatorów i predykaty, które mogą być używane w sprzężeniu Zobacz Używanie operatorów w wyrażeniach i GDZIE (Transact-SQL).

W poniższym przykładzie użyto mniej-niż (<) łączyć, aby znaleźć cen sprzedaży produktu 718 , są niższe niż cena katalogowa zalecane dla tego produktu.

USE AdventureWorks2008R2;
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

Oto zestaw wyników.

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)

Przyłącza się za pomocą operatora równości nie

łączyć — różne (<>) jest rzadko używana.Jako zasadę ogólną łączyć nie równości sensu tylko wtedy, gdy używana z samosprzężenie.Na przykład, to nie równości Transact-SQL łączyć i samosprzężenie są używane do znajdowania podkategorii, które mają co najmniej dwa różne ceny mniej niż $15:

USE AdventureWorks2008R2;
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;

Ostrzeżenie

The expression NOT column_name = column_name is equivalent to column_name <> column_name.

Następujące Transact-SQL przykładzie użyto łączyć nie równości w połączeniu z samosprzężenie do znalezienia wszystkich wierszy w ProductVendor tabela, w której dwie lub więcej wierszy mają taki sam ProductID , ale różnych VendorID numery (oznacza to, że produkty, które mają więcej niż jednego dostawcę):

USE AdventureWorks2008R2;
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