查询Score表中的最高分的学生学号和课程号?

图片说明
图片说明

我只写出了一部分,具体代码如下:

SELECT SCORE.CNO,MAX(DEGREE)最高分
FROM SCORE,COURSE
WHERE SCORE.CNO=COURSE.CNO
GROUP BY SCORE.CNO

返回结果如图:图片说明

之后我就不知道该如何写了?而且怎么写,也得不到我想要的结果。

select sno,cno from score where degree in (select max(degree) from degree);

如果是要求每个学生各自成绩最高的课程号、学号以及成绩的话,可以参考:http://blog.csdn.net/chinacsharper/article/details/45644691

_ tno是课程号吧?_

SELECT s.sno,c.tno
FROM SCORE s, COURSE c
WHERE s.cno=c.cno AND s.degree=(SELECT MAX(degree)FROM score);


如果课程号是tno的话,是应该这样写. 查出来的就是最高分的学生学号和课程号.

我猜你的意思是想查询Score表中的每门课程的最高分的学生学号和课程号,
可以这样:
select score.sno,score.cno,maxscore.最高分
from score,(select score.cno,max(degree) 最高分
from score
group by score.cno) maxscore
where score.cno=maxscore.cno and score.degree=maxscore.最高分

思路就是. 把你前面的查询结果作为一个表, 再与score连接查询,
另外, 按照你的说法, 只需要一个表score就可以了

查询结果如下:

你是没理解题目的意思, 查询表中的最高分的学生学号和课程号,只需要获取最高分的那个学生不就出来了。

如果ton是课程号的话,可以用两表连查join on

select con,ton,max(degree) from score join course on score.con=course.con where group by con,ton

这样就行了吧,干嘛还要查询course表。你由不是获取课程名称什么的,要是获取可以将下面的作为子查询,在left join下course表获取cname什么的

 SELECT sno,cno,MAX(DEGREE)最高分
FROM SCORE
GROUP BY sno,cno