前言
本节开始我们进入联接学习,关于连接这一块涉及的内容比较多,我们一步一步循序渐进学习,简短内容,深入的理解,Always to review the basics。
交叉联接(CROSS JOIN)
交叉连接是最简单的联接类型。交叉联接仅执行一个逻辑查询处理阶段-笛卡尔乘积。例如对两个输入表进行操作,联接并生成两个表的笛卡尔乘积,也就是说,将一个表的每一行与另一个表的所有行进行匹配。所以,如果一个表有m行,另一个表有n行,得到的结果中则会有m*n行。我们就拿SQL Server 2012教程中的例子说下
SELECT C.custid, E.empid FROM Sales.Customers AS C CROSS JOIN HR.Employees AS E ORDER BY E.empid
在Sales.Customers表中有91行数据,HR.Employees表中有9行数据,则利用交叉联接数据则有819(91*9)行数据,简略数据如下。
交叉联接我们可以用如下图表示
交叉联接最大的用途在于生成数字表以便我们用于其他目的,我们一起来看看。
IF OBJECT_ID('dbo.Digits','U') IS NOT NULL DROP TABLE dbo.Digits; CREATE TABLE dbo.Digits ( digit INT NOT NULL );