sql | 左连接、右连接、内连接、全连接

本文详细解释了SQL中的左连接、右连接、内连接和全连接的区别,通过实例说明如何根据不同业务需求计算单科和总成绩最高分,并强调连接操作中保留完整性的原则。
摘要由CSDN通过智能技术生成

其实这个内容算是老掉牙了

左连接、右连接、内连接、全连接从字面上都好理解
接下来我们来一一解疑

左连接:以左表为主表,根绝条件匹配右表,当右表部分记录因为条件不匹配显示为空,所以最终结果是左表全显示,右表存在字段缺失

右连接:同理

内连接:根据条件筛选,最终只显示共同部分(交集字段)

外连接:把两个表的所有字段都显示出来

接下来讲一个例子,
有学生表,学生id、课程id
成绩表,学生id、课程id、学科成绩

求成绩最高分?
这是不是有歧义?

这其实是两个问题,一个求单科最高分,另个求的总成绩最高分

注意,必然涉及单科最高分有多名学生。总分最高分有多名学生。
具体业务,需要思考一下这个点

然后就是很简单啦。
先做总分最高的
先求所有科目总分然后得到最高分,然后再和课程表左连接(注意和新的课程表连接,必然要保留我们查到的总成绩的那个结果完整)然后将结果再和学生表做连接(同理,也是要保留我们上一步结果的完整性,采用左连接) (注意描述可能会 有点模糊 但是重点原则 就是 必须让我们经过筛选后得到的表与新表做连接时保留完整)

做单科最高分,可是同理
先根据单科找最高分,在自连接(左连接、还是右连接,看选择那块表为左,哪块表为右),最后得到总分最高,又有学生id 的新表,最后再和学生表连接(左连接还是右连接 同理)最后就找到成绩最高的学生以及ta 的成绩

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值