【发布时间】:2017-04-18 21:59:24
【问题描述】:
我有一个查询可以根据学生的平均成绩定位学生,这个 mysql 查询在查询整个班级的职位时效果很好。但是,例如,当我想要一个特定学生的职位时,即使在列表中的学生不在该职位上,查询也会将该学生的职位排在第一位。
下面是查询,查询整个班级时。在这里效果很好。
SELECT (@rownum := @rownum + 1) AS rank, student_id,
student_name,term_1_avg
FROM `students` a CROSS JOIN
(SELECT @rownum := 0) params
WHERE class = 2
ORDER BY term_1_avg DESC
但是当查询是这样的时候
SELECT (@rownum := @rownum + 1) AS rank, student_id,
student_name,term_1_avg
FROM `students` a CROSS JOIN
(SELECT @rownum := 0) params
WHERE class = 2 and student_id=2013494
ORDER BY term_1_avg DESC
即使该学生不是第一名,它也会将学生排名第一。
如何更改查询,以便在查询学生时显示他/她在全班的位置。
【问题讨论】:
标签: php mysql sql database rank