前言

本节开始我们进入联接学习,关于连接这一块涉及的内容比较多,我们一步一步循序渐进学习,简短内容,深入的理解,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)行数据,简略数据如下。

移动开发培训,Android培训,安卓培训,手机开发培训,手机维修培训,手机软件培训

交叉联接我们可以用如下图表示

移动开发培训,Android培训,安卓培训,手机开发培训,手机维修培训,手机软件培训

交叉联接最大的用途在于生成数字表以便我们用于其他目的,我们一起来看看。

移动开发培训,Android培训,安卓培训,手机开发培训,手机维修培训,手机软件培训

IF OBJECT_ID('dbo.Digits','U')
IS NOT NULL DROP TABLE dbo.Digits;

CREATE TABLE dbo.Digits
(
    digit INT NOT NULL
);

网友评论