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

有一个学生表,里面有  学号 功课编号 学生成绩三个字段.

用一个SQL查询语句得出每门功课成绩最好的前两名

学号  功课编号     学生成绩

1          1             99

2          1             98

3          1             100

4          2             88

5          2             87

6          2             88

7          3             99

8          3             88

9          3             100

解决方法

SELECT DISTINCT 学生表1.*

FROM 学生表 学生表1 where 学生表1.学号 IN

(SELECT TOP 2 学生表.学号

FROM 学生表

WHERE 学生表.功课编号 = 学生表1.功课编号

ORDER BY 学生成绩 DESC)

查询结果

学号  功课编号     学生成绩

1          1             99

3         1             100

4          2             88

6          2             88

7          3             99

9          3             100

从IN的用法上看,SELECT TOP 2 返回两个学号,SQL语句因仅有两个结果。个人的理解有限,不知道是怎样产生了两条以上的结果也好以后应用在工作中。还有就是同时想问一下自连接是如何运行的。谢谢。

分享至:

90ed4b13fe016cebd9fe3df2ae3a899b.gif


版权声明:本文为weixin_31632529原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。