在逻辑上,交叉联接是一种最简单的联接。交叉联接只实现一个逻辑查询步骤(笛卡尔积)。这一步是对输入的两个表进行操作,把它们联接起来,生成二者的笛卡尔积。也就是将一个输入表的每行与另一个表的所有行进行匹配。如果一个表有m行,而另一个表有n行,将得到m*n行的结果集。
SQL Server 支持交叉联接的两种标准语法:
ANSI SQL-92
SELECT C.custid,E.empid FROM dbo.Customers AS C
CROSS JOIN dbo.Employees AS E
ANSI SQL-89
SELECT C.custid,E.empid FROM dbo.Customers AS C,dbo.Employees AS E
推荐使用ANSI SQL-92语法
自联接:对同一个表的多个实例也可以进行联接,这种功能就是所谓的自联接(self-join),所有基本联接类型(交叉联接、内联接,以及外联接)都支持自联接。
注意:在自联接中,必须为表起别名。如果不为表指定别名,联接结果中的列名就会有歧义。