使用交叉聯結
更新: 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)
說明及資訊
變更歷程記錄
版本 | 歷程記錄 |
---|---|
2006 年 4 月 14 日 |
|