有2个表,score表跟course表。score存放所有学生的课程成绩,course存放所有课程的信息。现在要查处每个课程下成绩前2名的学生。

第一种方法

只把课程表作为主表,分别查询第一名、第二名的学生id或姓名。

SELECT CO.cname 课程,(select sc.student_idfrom score scwhere sc.course_id = co.cidorder by sc.num limit 0, 1) 第一名,(select sc.student_idfrom score scwhere sc.course_id = co.cidorder by sc.num limit 1, 1) 第二名from course co;

这种方法比较好理解,但效率比较低一点,要把score表查询2遍。于是想到oracle中用with。。。as创建临时表,想到这样的写法。

with t as
(select sc.student_idfrom score scwhere sc.course_id = co.cidorder by sc.num)SELECT CO.cname 课程,(select * from t limit 0, 1) 第一名,(select * from t limit 1, 1) 第二名from course co;

运行后报错,发现自己是5.5版本,不支持with as的写法,高版本的可以试下。

第二种方法:

select sc.course_id, sc.student_idfrom score scleft join score sbon sc.course_id = sb.course_idand sc.num < sb.numgroup by sc.course_id, sc.student_id
having count(sc.course_id) < 2

这种方法的原理是查询同一门课程中,比自己分数高的学生的数量,第一名比自己高的数量为0,第二名为1,第三名为2.以此类推,所以只要查询count()<2即可

mysql中查询每门课程成绩最好的前两名相关推荐

  1. mysql查询每门课程成绩最好的前两名学生id和姓名

    创建库:create database db6; 库下面创建表: 班级表: mysql> create table class(cid int not null unique auto_incr ...

  2. 查询每门课程成绩最好的前两名

    建表语句点击详见 – 查询每门课程成绩最好的前两名 SELECT sc.c_id, sc.s_score FROM score sc WHERE ( SELECT COUNT(*) FROM scor ...

  3. mysql查询每门功课成绩最好的前两名_用一个SQL查询语句得出每门功课成绩最好的前两名 - SQL Server论坛 - 51CTO技术论坛_中国领先的IT技术社区...

    有一个学生表,里面有  学号 功课编号 学生成绩三个字段. 用一个SQL查询语句得出每门功课成绩最好的前两名 学号  功课编号     学生成绩 1          1             99 ...

  4. mysql查询成绩大于89分_查询每门课程成绩都大于80分学生的姓名

    转载的sql语句 .1 查询每门课程成绩都大于80分学生的学号 数据库 表 student name score course A 85  语文 A 75  数学 A 82  英语 B   75  语 ...

  5. mysql 查询前两名_Mysql:查询每门课程成绩的前两名

    一张成绩表,查询每门课程的前两名,咋一看无从下手,其实可以理解为表自连接 . 建表语句: CREATE TABLE `Department` ( `Id` int(11) NOT NULL DEFAU ...

  6. 查询成绩最好的前两名_SQL查询整理

    SQL查询相关知识整理 习题中会用到的表 一.简单查询 1.查询姓"猴"的学生名单 select 学号,姓名 from student where 姓名 like '猴%': 2. ...

  7. mysql查询课程最高分_在“成绩管理”数据库中,查询每门课程的最高分,要求得到的信息包括课程名称和分数。正确的命令是( )。 A.SELE_搜题易...

    统计只有2名以下(含2名)学生选修的课程情况,统计结果中的信息包括课程名称.开课院系和选修人数,并按选课人数排序.正确的命令是(  ). A.SELECT 课程名称,开课院系,COUNT(课程编号)A ...

  8. mysql 排名_学会在MySQL中实现Rank高级排名函数,所有取前几名问题全部解决.

    MySQL中没有Rank排名函数,当我们需要查询排名时,只能使用MySQL数据库中的基本查询语句来查询普通排名.尽管如此,可不要小瞧基础而简单的查询语句,我们可以利用其来达到Rank函数一样的高级排名 ...

  9. 查询成绩最好的前两名_收藏转发!一线老师用真实数据告诉你,高考成绩和平时成绩的关系...

    临近高考,多数考生家长变得不淡定了,他们比考生更焦虑,比自己考试更紧张!不断有考生家长在询问:高考成绩和平时的考试成绩有没有关系?一模二模和三模,哪次考试成绩和高考更接近?高考分数比平时考试高还是低? ...

最新文章

  1. Java中throw re_详解Java编程中throw和throws子句的使用方法
  2. 电脑cpu排名_可能是最详细的小白【笔记本电脑】选购攻略(附热门机型推荐)...
  3. mongodb 监控项详解(mms)
  4. 电脑中没有oracle服务器,用AnySQL在没有oracle客户端的服务器上发送邮件
  5. Activity生命周期的学习和验证
  6. MySQL 精选 60 道面试题(含答案)
  7. 打包签名时出现Conversion to Dalvik format failed with error 1
  8. 广西桂林平均工资是多少?
  9. apache mod_autoindex 详解
  10. 模块化无人机,不仅配置高,还颜值爆表
  11. cad shx 字体读取
  12. NBA球员数据的爬取
  13. 大学计算机课程进制的转换教程,交大计算机课程(1):各种进制转换
  14. Home Barbering Grows In Recession, With Hairy Results
  15. QQ音乐爬虫之放弃的路
  16. 记一次查询性能优化,原30s+,现0.5s~20s
  17. 减缓衰老,让T细胞染色体“变长”就行,还能提高免疫力|Nature子刊
  18. 拉拉米抢单发单系统源码+二开ui带视频介绍+ 放量功能
  19. python爬取高德地图数据_你的未来有我导航----教你如何爬取高德地图
  20. 考研复试英语口语最全攻略!

热门文章

  1. 神仙打架?细数玩刺激战场中被检测的几种情况:你中招了吗?
  2. 基于web的视频_如何创建基于Web的视频播放器
  3. 一次Linux系统密码修改失败事件
  4. 【软件工程】软件编码
  5. matlab使用App designer生成可独立运行的app(预测模型为BP神经网络模型)
  6. 2021-06-04 操作系统FIFO算法C语言实现
  7. 面试——Spring事务管理
  8. JQuery点击事件添加间隔
  9. 2022-金盾信安杯
  10. Hessian的基本使用