共用方式為


使用交叉聯結

更新: 2006 年 4 月 14 日

未包含 WHERE 子句的交叉聯結將產生聯結所牽涉之資料表的笛卡兒乘積 (Cartesian Product)。Cartesian 乘積結果集的大小為第一個資料表的資料列數乘以第二個資料表的資料列數。下列範例顯示 Transact-SQL 交叉聯結。

USE AdventureWorks;
GO
SELECT p.SalesPersonID, t.Name AS Territory
FROM Sales.SalesPerson p
CROSS JOIN Sales.SalesTerritory t
ORDER BY p.SalesPersonID;

結果集包含了 170 個資料列 (SalesPerson 擁有 17 個資料列,而 SalesTerritory 擁有 10 個;17 乘以 10 等於 170)。

不過,若加入 WHERE 子句,交叉聯結的運作模式將和內部聯結一樣。例如,下列 Transact-SQL 查詢將產生相同的結果集。

USE AdventureWorks;
GO
SELECT p.SalesPersonID, t.Name AS Territory
FROM Sales.SalesPerson p
CROSS JOIN Sales.SalesTerritory t
WHERE p.TerritoryID = t.TerritoryID
ORDER BY p.SalesPersonID;

-- Or

USE AdventureWorks;
GO
SELECT p.SalesPersonID, t.Name AS Territory
FROM Sales.SalesPerson p
INNER JOIN Sales.SalesTerritory t
ON p.TerritoryID = t.TerritoryID
ORDER BY p.SalesPersonID;

請參閱

概念

在運算式中使用運算子

其他資源

WHERE (Transact-SQL)
SELECT (Transact-SQL)
運算子 (Transact-SQL)
SELECT 範例 (Transact-SQL)

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 4 月 14 日

變更的內容:
  • 將範例變更成使用不同的資料表。