一个学生表 Student (SId,学生名字SName)
一个成绩表 Score (Id,课程name,学生SId,成绩 Score)
求查询每个学生的成绩最高的那门课程的信息的sql 语句 。 返回 (学生名字,课程名字 成绩)
Select SName,课程name,成绩Score
from Student,Score
where SId=Id and 成绩Score = (select Max(成绩Score) from Score where SId=Id)
select ST.SName,SC.name,SC.Score from Student as ST left join(select SC2.id,SC2.name,SC2.SId,max(SC2.Score) as Score from (select * from Score order by Score) as SC2 group by SId) as SC on ST.SId=SC.SId;
如果有一个学生两个100分,这个sql只能显示其中一个。
select max(A.成绩),B.课程名字,B.学生名字 from Student A,Score B
where A.SId=B.SId group by A.课程名字,B.学生名字
select SName,name Score from Score a LEFT JOIN Student b on a.SId=b.SId
where Score= (select MAX(Score) from Score where SId=a.SId)
亲测:这个语句可以把同一个学生的两个最高分都可以查出来