前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Mysql强化练习-难题之查询所有课程的成绩第2名到第3名的学生信息及该课程成绩

Mysql强化练习-难题之查询所有课程的成绩第2名到第3名的学生信息及该课程成绩

作者头像
Maynor
发布于 2021-04-09 03:46:46
发布于 2021-04-09 03:46:46
1.8K00
代码可运行
举报
运行总次数:0
代码可运行

– 22、查询所有课程的成绩第2名到第3名的学生信息及该课程成绩

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT t1.* FROM
(SELECT st.*,c.c_id,c.c_name,sc.s_score FROM student st
LEFT JOIN score sc ON sc.s_id=st.s_id
INNER JOIN course c ON c.c_id =sc.c_id AND c.c_id="01"
ORDER BY sc.s_score DESC LIMIT 1,2) t1

UNION ALL

SELECT t2.* FROM
(SELECT st.*,c.c_id,c.c_name,sc.s_score FROM student st
LEFT JOIN score sc ON sc.s_id=st.s_id
INNER JOIN course c ON c.c_id =sc.c_id AND c.c_id="02"
ORDER BY sc.s_score DESC LIMIT 1,2) t2

UNION ALL

SELECT t3.* FROM
(SELECT st.*,c.c_id,c.c_name,sc.s_score FROM student st
LEFT JOIN score sc ON sc.s_id=st.s_id
INNER JOIN course c ON c.c_id =sc.c_id AND c.c_id="03"
ORDER BY sc.s_score DESC LIMIT 1,2) t3

这是一道mysql难题,也是经典题,搞懂这题就懂得一类题了.

逐条解析 1.从学生表当中选择

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT t1.* FROM (student) 

2.将学生表和分数表连接从中选择学生信息,课程id,课程名字,分数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT st.*,c.c_id,c.c_name,sc.s_score FROM student st
LEFT JOIN score sc ON sc.s_id=st.s_id

3.将学生表和课程表连接,倒序 ,抽取第2,第3名 ,且课程id为 01的课程信息 并按分数归类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
INNER JOIN course c ON c.c_id =sc.c_id AND c.c_id="01"
ORDER BY sc.s_score DESC LIMIT 1,2

猜你喜欢: – 25、查询各科成绩前三名的记录

– 42、查询每门功成绩最好的前两名

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/09/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Linux内核编程--进程通信信号
信号是 Linux 进程间通信的最古老的方式。信号是软件中断,它是在软件层次上对中断机制的一种模拟。
Coder-ZZ
2022/05/09
2.9K0
Linux内核编程--进程通信信号
【Linux】:进程信号(再谈信号保存和信号捕捉)
🌈 当某个信号的处理函数被调用时,内核自动将当前信号加入进程的信号屏蔽字,当信号处理函数返回时自动恢复原来的信号屏蔽字,这样就保证了在处理某个信号时,如果这种信号再次产生,那么 它会被阻塞到当前处理结束为止
IsLand1314
2024/11/26
2540
【Linux】:进程信号(再谈信号保存和信号捕捉)
进程信号
kill命令是调用kill函数实现的。kill函数可以给一个指定的进程发送指定的信号。raise函数可以给当前进程发送指定的信号(自己给自己发信号)。
ljw695
2024/11/21
970
进程信号
Linux笔记(15)| Linux的信号
今天要分享的是Linux中的信号机制,信号是一种软件中断,是一种处理异步事件的方法,可以很好地在多个进程之间进行同步和简单的数据交换。
飞哥
2020/11/13
2.6K0
Linux笔记(15)| Linux的信号
【Linux】进程信号
Linux进程信号是一种进程间通信的机制,它允许一个进程通知另一个进程某个事件已经发生。以下是关于Linux进程信号的详细介绍:
大耳朵土土垚
2024/12/24
1320
【Linux】进程信号
Linux:进程信号(二.信号的保存与处理、递达、volatile关键字、SIGCHLD信号)
上次介绍了:(Linux:进程信号(一.认识信号、信号的产生及深层理解、Term与Core))[https://blog.csdn.net/qq_74415153/article/details/140624810]
是Nero哦
2024/07/26
1950
Linux:进程信号(二.信号的保存与处理、递达、volatile关键字、SIGCHLD信号)
【Linux探索学习】第二十八弹——信号(下):信号在内核中的处理及信号捕捉详解
https://blog.csdn.net/2301_80220607/category_12805278.html?spm=1001.2014.3001.5482
GG Bond1
2025/02/05
1260
【Linux探索学习】第二十八弹——信号(下):信号在内核中的处理及信号捕捉详解
linux中sigaction函数详解
一、函数原型:sigaction函数的功能是检查或修改与指定信号相关联的处理动作(可同时两种操作)
全栈程序员站长
2022/09/01
1.6K0
linux中sigaction函数详解
进程间通讯(三).signal
UNIX/Linux 是多任务的操作系统,通过多个进程分别处理不同事务来实现,如果多个进程要进行协同工作或者争用同一个资源时,互相之间的通讯就很有必要了
franket
2021/09/15
1.6K0
Linux进程信号详解【下】
  当时在 进程等待 这一章节里我们并没有详细说明 Core dump标志,而我们通过man手册查看signal,会发现大部分的信号的作用都是 终止进程,而终止进程的动作却又分为 Core 和 Term(termination) 两个动作。
用户11029129
2024/08/06
1350
Linux进程信号详解【下】
【Linux进程信号】Linux信号机制深度解析:保存与处理技巧
🔍前言:在Linux操作系统的广阔天地中,信号机制无疑是一个充满挑战与机遇的领域。信号,作为进程间通信的一种重要方式,不仅承载着丰富的信息,还扮演着进程控制与管理的重要角色。然而,对于许多初学者而言,信号的保存与处理往往是一个难以逾越的障碍
Eternity._
2024/10/15
1850
【Linux进程信号】Linux信号机制深度解析:保存与处理技巧
【linux学习指南】详解Linux进程信号保存
如果在进程解除对某信号的阻塞之前这种信号产⽣过多次,将如何处理?POSIX.1允许系统递送该信 号⼀次或多次。Linux是这样实现的:常规信号在递达之前产⽣多次只计⼀次,⽽实时信号在递达之 前产⽣多次可以依次放在⼀个队列⾥。本章不讨论实时信号。
学习起来吧
2024/12/01
1230
【linux学习指南】详解Linux进程信号保存
Linux——进程信号
生活中的信号:红绿灯,手机的来电通知等。 为什么这些是信号呢?因为我们知道这些信号的意义代表着什么。 例如:红绿灯 有人教育过我们,让我们的大脑记住了红绿灯属性对应的行为。 但是,我们就算知道这个信号,也不一定要立刻去处理,因为可能正在做另一间更重要的事情。 所以我们也会有对应的三个动作: 默认动作(看到红灯停),自定义动作(看到红灯不是立刻停下,而而是后退一步或者是其他操作),忽略动作(看到红灯不停)。
有礼貌的灰绅士
2023/05/10
2.8K0
Linux——进程信号
【Linux】信号>信号产生&&信号处理&&信号保存&&信号详解
SIGINT的默认处理动作是终止进程,SIGQUIT的默认处理动作是终止进程并且Core Dump,我们来验证一下
用户10925563
2024/06/04
2840
【Linux】信号>信号产生&&信号处理&&信号保存&&信号详解
异步通信之 信号
在软件层次上对中断机制的一种模拟,是一种异步通信的方式 。信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某一个突发事件。
看、未来
2021/10/09
1.2K0
异步通信之 信号
Linux进程信号总结
不难看出上面的死循环在代码层面是永远无法结束程序的,那是否还有别的办法?对于死循环来说,最好的方式就是使用Ctrl+C对其进行终止。
咬咬
2024/07/20
990
Linux进程信号总结
Linux进程间通信(三) - 信号
什么是信号 软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。在软件层次上是对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。信号机制除了基本通知功能外,还可以传递附加信息。 收到信号的进程对各种信号有不同的
三丰SanFeng
2018/01/16
2.6K0
【Linux信号】三:信号的捕捉
信号捕捉主要是为了防止进程意外结束,并得到异常信息,捕捉信号后可以执行我们想要的动作。
mindtechnist
2024/08/08
2310
【Linux信号】三:信号的捕捉
【Linux】进程信号
生活中有很多的信号,比如闹钟、消息提醒、手机铃声,红绿灯。但是人是怎么识别红绿灯的,识别信号的?通过认识产生行为:有人通过教育的手段让我们在大脑中记住了对应的红绿灯属性或者行为;但是当信号到来的时候,我们不一定会马上去处理这个信号:信号可以随时产生(异步),而我们可能会做更重要的事情;信号到来的时候在到信号被处理一定会有时间窗口,必须得记住这个信号;
平凡的人1
2023/10/15
2350
【Linux】进程信号
信号
好,看完上面这些处理函数,其实这几个函数真的就是对信号集进行操作而已,而不会对具体信号有什么动作。 别急
看、未来
2020/08/26
1.3K0
信号
推荐阅读
相关推荐
Linux内核编程--进程通信信号
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档