SELECT
*
FROM
`student` as s
where
(select count(1)+1 from student where cid=s.cid and s.score<score) <=3
思路是查询当前学生,比子查询(所有学生)中分数低的不超过三个,其中自己是相等,子查询结果为3的是第3,用s.score<score而不是<=是避免并列不显示(即这样可以把两个并列第三的都显示出来),相同班级用两个学生记录对比,而不是分组。
SELECT
*
FROM
`student` as s
where
(select count(1)+1 from student where cid=s.cid and s.score<score) <=3
思路是查询当前学生,比子查询(所有学生)中分数低的不超过三个,其中自己是相等,子查询结果为3的是第3,用s.score<score而不是<=是避免并列不显示(即这样可以把两个并列第三的都显示出来),相同班级用两个学生记录对比,而不是分组。