请教各位大佬们一个SQL查询语句

有两张表如下图片说明

图片说明

现在要求是写出SQL语句:按照班级class进行分组,然后查询出各个班级数学成绩前两名的学生的姓名name、班级class、数学成绩math

我写出的SQL语句如下:图片说明

最后一个条件limit 2不知道该怎么插入
才能显示,拜托各位大佬了,谢谢谢谢。

这样查询只有两条数据了图片说明

这就叫完美,想明白了
SELECT s.ID '学号',s.name '名字',s.class '班级',g.math '成绩'

FROM

stinfo s,grade g

WHERE

(SELECT COUNT(*)

FROM

stinfograde s1,grade g1

WHERE s1.class=s.class AND g1.math>=g.math

AND g1.ID=s1.ID)<=2

AND g.ID=s.ID

GROUP BY s.class,g.math

ORDER BY s.class,g.math DESC;

可以试试下面的sql

SELECT
    s2.ID,
    s2.name,
    s2.class,
  s2.math 
FROM
    (
    SELECT
    IF
        ( s1.class = @class, @rank := @rank + 1, @rank := 1 ) AS rank,
        @class := class AS tmp_class,
        s1.ID,
        s1.name,
        s1.class,
        s1.math 
    FROM
        ( select stinfo.ID,name,class,math from stinfo,grade where stinfo.ID=grade.ID  ORDER BY class, math DESC ) s1,
        ( SELECT @class := NULL, @rank := 1 ) tmp 
    ) s2 
WHERE
    s2.rank <= 2

select name 姓名,class 班级,math 数学成绩 from stinfo,grade
where stinfo.ID=grade.ID group by class order by math desc;

https://zhidao.baidu.com/question/239587288546003084.html