在我的php项目中,我必须在考试后上传学生成绩,并通过生成等级显示结果。当上传成绩时,如果学生缺席,则将字段值添加为“缺席”。因此,当生成排名列表时,
这些学生的等级列表示为'缺席',但是当我使用以下表示为'缺席'的代码标记时,等级为1。

如何解决呢?我正在使用数据表

 SELECT SQL_CALC_FOUND_ROWS student_id as sl,student_rollno, student_name, school_name as student_school,mark_mark,
 FIND_IN_SET( mark_mark, (
SELECT GROUP_CONCAT( mark_mark
ORDER BY mark_mark DESC )
FROM mark )
)
 as student_rank FROM student  JOIN class ON student_class=class_id JOIN school ON student_school=school_id  JOIN mark ON mark_student=student_id WHERE student_status=1        LIMIT 0, 1000

最佳答案

这意味着您必须在group_concat的order by子句中更改值'Absent'的权重:GROUP_CONCAT( mark_markORDER BY IF(mark_mark='Absent', '0', mark_mark) DESC )

我使用字符串“ 0”是因为我假设其他标记是数字。如果此假设不正确,请使用比最低分数等级低的任何字符串或数字值。

虽然,我会考虑从列表中完全省去缺席的学生,但是我对业务要求并不感到惊讶。

关于php - 如何从标记PHP生成等级?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34080508/

10-14 00:14