首页 > 解决方案 > 如何从 MySQL 57 中每个学生的每个 groupcode 中选择 2 个最高分?

问题描述

我的表中的值。

在此处输入图像描述

现在,预期的结果例如,如果我选择在 groupcode = 1 中选择 2 个最高分,我希望看到以下内容

在此处输入图像描述

我的查询

SELECT marks FROM person WHERE groupCode = 1 ORDER BY marks DESC LIMIT 2; 

Quigsley Kos groupCode仅获得分数为 69 和 30的 1 的结果;

请有人帮忙。

标签: mysqlsql

解决方案


SELECT `sn`, `admno`, `studname`, `fclass`, `groupcode`, `subjectcode`, `marks`
FROM
(
SELECT `sn`, `admno`, `studname`, `fclass`, `groupcode`, `subjectcode`, `marks`,
        CASE WHEN @group = T.groupcode AND @studname = T.studname
        THEN @row:=@row+1
        ELSE
             @row:=1
        END AS rownum,
        @group:=T.groupcode AS Vargroupcode,
        @studName:= T.studname
FROM TableA T,(SELECT @group:=null,@row:=0) R
ORDER BY groupcode,studname
) T1
WHERE rownum<=2

演示

http://sqlfiddle.com/#!9/65760b/1


推荐阅读