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

其实这个内容算是老掉牙了
左连接、右连接、内连接、全连接从字面上都好理解

接下来我们来一一解疑
左连接:以左表为主表,根绝条件匹配右表,当右表部分记录因为条件不匹配显示为空,所以最终结果是左表全显示,右表存在字段缺失
右连接:同理
内连接:根据条件筛选,最终只显示共同部分(交集字段)
外连接:把两个表的所有字段都显示出来

接下来讲一个例子,

有学生表,学生id、课程id

成绩表,学生id、课程id、学科成绩

求成绩最高分?

这是不是有歧义?

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

注意,必然涉及单科最高分有多名学生。总分最高分有多名学生。

具体业务,需要思考一下这个点

然后就是很简单啦。

先做总分最高的

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

做单科最高分,可是同理

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

相关推荐
葡萄城技术团队4 小时前
1000 人协同压测的环境瓶颈排查:CPU 争用与 Wi\-Fi
前端
2301_780789664 小时前
跨平台适配!SDK 游戏盾兼容全终端游戏场景
java·网络·ddos
学长毕设5 小时前
基于springboot的食品仓库管理系统
java·spring boot·后端
excel5 小时前
Marked 与 Markdown 有什么区别?该怎么选?
前端
步行cgn6 小时前
FormHttpMessageConverter 详解:Spring MVC 中表单数据的读写转换器
java·spring·mvc
龙亘川6 小时前
构建城市公共安全数字底座:亘川智城智慧安防系统全维度解读
java·大数据·开发语言·人工智能·信息可视化
金銀銅鐵6 小时前
[Java] 用 CLI 展示 EnumMap 增删键值对时的内部变化
java·源码·ai编程
Da Da 泓6 小时前
五子棋 Web 端测试用例报告
前端·网络·websocket·网络协议·测试用例·项目
秋天的怀念_David6 小时前
第二十二夜 · 数字迷雾
java·程序人生·算法
Raas1006 小时前
AI网关部署方案?从部署到上线全流程
java·开发语言·人工智能·gateway·ai网关·企业级ai网关·企业级ai产品