1、SQL Server自连接
定义:自联接用于将表连接到自身(同一个表)。 它对于查询分层数据或比较同一个表中的行很有用。 自联接使用内连接或左连接子句。 由于使用自联接的查询引用同一个表,因此表别名用于为查询中的表 分配不同的名称。
列如:在一张表中,有学号、课程、成绩,查询课程编号“02”的成绩比课程编号“01”课程低的所有同学的学号
在上图中,通过用两次Sc表的不同命名,从而用Sid将两张数据相同,局部命名不同的表链接起来,查出要查得数据
2、SQL Server交叉连接(cross join)
SQL支持一种被称为交叉连接的操作,它们都返回被连接的两个表所有数据行的笛卡尔积,返回到的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。惟一的不同在于,交叉连接分开列名时,使用CROSS JOIN关键字而不是逗号。
CROSS JOIN 将第一个表(T1)中的每一行与第二个表(T2)中的每一行连接起来。 换句话说,交叉连接返回 两个表中行的笛卡尔积
CROSS JOIN 与INNER JOIN或LEFT JOIN不同,交叉连接不会在连接的表之间建立关系,也不需要两个表之间有对应的关系
CROSS JOIN 从第一个表(Course)获取一行,然后为第二个表(Teacher)中的每一行创建一个新行。 然后它对第一个表(Course)中的下一行执行相同操作,依此类推。
在上图中,Course表一共有3行数据, Teacher表也有3行数据, CROSS JOIN 总共创建了 9 行。 通常,如果第一个表有 n 行,第二个表有 m 行,则交叉连接将产生 n * m 行。