SQL Server自连接和交叉连接

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 行。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值