请教大佬们一个SQL查询问题,如何在多表查询中使用groupby+orderby+limit多条件查询并且逻辑通顺?
有两张表,学生信息表stinfo,包含字段ID、name、class,学生成绩表grade含有字段ID、math。
现在要求:
按照班级进行分组查询出每个班级数学分数前两名学生的所有信息(ID、姓名、班级、数学成绩)
我写的SQL查询的结果逻辑有问题:select name,math,class from stinfo,grade where stinfo.ID=grade.ID group by class,grade.ID order by math desc;
查询结果如下:谢谢大佬!
回答
SELECT `name`, math,classFROM
(
SELECT class,id, `name`, math,
@rank := IF( @current_class= class, @rank + 1, 1 ) AS rank,
@current_class := class
FROM
(
SELECT class,stuinfo.id,stuinfo.`name`,math
FROM stuinfo
JOIN grade ON stuinfo.id=grade.id
ORDER BY
class,
math DESC
) temp
) ranked
WHERE
rank <= 2;
以上是 请教大佬们一个SQL查询问题,如何在多表查询中使用groupby+orderby+limit多条件查询并且逻辑通顺? 的全部内容, 来源链接: utcz.com/a/38437.html