Php 基于分数和时间的每个学生的唯一排名| Mysql | RDBMS

Php 基于分数和时间的每个学生的唯一排名| Mysql | RDBMS,php,mysql,sql,rdbms,Php,Mysql,Sql,Rdbms,我正在尝试使用PHP和Mysql创建一个在线测试应用程序。My mysql表学生将具有以下结构: | id | username | marks | time | rank | 我想根据每个学生的分数和时间,给他们一个独特的排名,分数越高,时间越短,排名越高 任何帮助都将不胜感激。首先,您不应该将秩存储到表中,因为它是一个计算值,每次添加新行时可能会更改。然后,如果你想得到每个学生的排名,你可以这样做: select students.*, (@rank := @rank+1)

我正在尝试使用PHP和Mysql创建一个在线测试应用程序。My mysql表学生将具有以下结构:

 | id | username | marks | time | rank |
我想根据每个学生的分数和时间,给他们一个独特的排名,分数越高,时间越短,排名越高


任何帮助都将不胜感激。

首先,您不应该将秩存储到表中,因为它是一个计算值,每次添加新行时可能会更改。然后,如果你想得到每个学生的排名,你可以这样做:

select 
  students.*, 
  (@rank := @rank+1) AS rank 
from students 
inner join (select @rank := 0) as a 
order by mark desc, time asc;

示例:。

似乎您真的只想按马克·德斯克、时间ASC订购?也应该按什么顺序计算。一分钟内完成的人应该在分数只有10%左右的情况下排名高低?这正是我所需要的!。。thanx a lot bro:如果我想显示某个学生的排名呢?你可以将结果存储到一个表中,然后从中进行选择,或者计算排名较高的学生人数。对于更多的重复使用,我建议在学生表上执行某些操作时使用触发器使等级表保持最新。如果所有条件都匹配,则必须为学生提供相等的等级,但不提供最新的等级