如何从MySQL 57中的每个学生的每个组代码中选择2个最高分?

时间:2018-04-26 05:26:51

标签: mysql sql

我的表中的值。

enter image description here

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

enter image description here

我的查询

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

仅获取带有标记69和30的Quigsley Kos groupCode 1的结果;

有人请帮忙。

1 个答案:

答案 0 :(得分:0)

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