使用交叉联接
更新日期: 2006 年 4 月 14 日
没有 WHERE 子句的交叉联接将产生联接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。下面的示例显示了 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 日 |
|