Mysql强化练习-难题之查询所有课程的成绩第2名到第3名的学生信息及该课程成绩
mysql 查询 信息 所有 练习 课程 学生 强化
2023-09-27 14:27:52 时间
– 22、查询所有课程的成绩第2名到第3名的学生信息及该课程成绩
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.从学生表当中选择
SELECT t1.* FROM (student)
2.将学生表和分数表连接从中选择学生信息,课程id,课程名字,分数
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的课程信息
并按分数归类
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、查询每门功成绩最好的前两名
相关文章
- MySQL 多表查询
- MySQL查询一年、一周、三个月的数据
- MySql 查询银行卡号打码
- mysql随机查询若干条数据的方法
- mysql数据库优化之表的设计和慢查询定位
- MySQL批量修改指定库的所有表的字符集 & collation
- mysql java.security.cert.CertificateNotYetValidException: NotBefore:
- webpy使用mysql数据库操作(web.database)
- 【灵魂拷问】你真的懂得Mysql的管理和使用吗?
- Mysql查询时case when语句的使用
- mysql查询某一个字段是否包含中文字符
- RDS for MySQL 表上 Metadata Lock 的产生和处理
- 《PHP和MySQL Web开发从新手到高手(第5版)》一1.7 万事俱备,摩拳擦掌
- 基于NodeJS+Vue+MySQL实现一个在线编程笔试平台【100010629】
- MySql分页查询
- MySQL 查询语句(不定时更新)
- 【MySQL】18-MySQL中子查询的使用详细总结
- Mysql 开启慢日志查询及查看慢日志 sql
- 如何在mysql下实现事务的提交与回滚
- MySQL数据库镜像 / 实时备份Zen Cart数据库
- mysql存储引擎的一点学习心得总结
- sql server链接mysql
- mysql登录后显示用户名与当前数据库名
- 使用mysqlbinlog从二进制日志文件中查询mysql执行过的sql语句 (原)