mysql版 查询各科成绩前三名的记录:(不考虑成绩并列情况)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql版 查询各科成绩前三名的记录:(不考虑成绩并列情况)相关的知识,希望对你有一定的参考价值。

mysql
查询各科成绩前三名的记录:(不考虑成绩并列情况)

学生表、课程表、 成绩表、教师表50个常用sql语句
--Student(S#,Sname,Sage,Ssex) --学生表
--Course(C#,Cname,T#) --课程表
--SC(S#,C#,score) --成绩表
--Teacher(T#,Tname) --教师表

上面那条答案应该是可以的啊,可能是看起来复杂了点吧,我自己试过是没问题的:
SELECT t1.sno,t1.cno,Score
FROM SC t1
WHERE EXISTS
(SELECT COUNT(1)
FROM SC
WHERE t1.cno= cno AND t1.score<score
HAVING COUNT(1)<3)
ORDER BY t1.cno,score DESC
另外还有一种类似的写法:

SELECT t1.sno,t1.cno,Score
FROM SC t1
WHERE
(SELECT COUNT(cno)
FROM SC
WHERE t1.cno= cno AND t1.score<score)<3
ORDER BY t1.cno,score DESC
参考技术A select * from
(select Student.S#,Sname,Sage,Ssex,SC.C#,score,Cname
from SC inner join Student on SC.S#=Student.S#
inner join Course on Course.C#=SC.C#) as t
where exists(
select count(1) from t as d
where C#=d.C# and score < d.score
having count(1)<3
)

以上是关于mysql版 查询各科成绩前三名的记录:(不考虑成绩并列情况)的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 查询各科前三名(考虑成绩并列情况)

MySQL 查询各科前三名(考虑成绩并列情况)

Mysql 单表查询各班级总分前三名

sql语句查询成绩表各科前三名

mysql排序方法

EXCEL中按班级提取前各科的前三名、后三名的成绩及姓名?