我正在尝试使用PHP& amp;创建一个在线测试应用程序。 Mysql的。我的mysql表students
将具有以下结构:
| id | username | marks | time | rank |
我想根据每个学生的分数和时间,较高的分数和较低的时间来影响每个学生的独特排名。
任何帮助将不胜感激。
答案 0 :(得分:0)
首先,您不应该将排名存储到表中,因为它是每次添加新行时可能会更改的计算值。然后,如果你想获得每个学生的排名,你可以这样做:
select
students.*,
(@rank := @rank+1) AS rank
from students
inner join (select @rank := 0) as a
order by mark desc, time asc;
示例:SQLFiddle。