mysql比较总体上的3列顺序

mysql比较总体上的3列顺序,mysql,Mysql,我有一个游戏,用户可以保存在那里的名称和数据库中的分数 纵队 名称、尝试次数、正确率、所用时间、图像集 其中3列基于分数 尝试次数、正确率、所用时间、 目前,我的表显示时间递增 $sql = "SELECT * FROM Score ORDER BY time ASC LIMIT 5"; 有没有人可以比较分数 这是一个2分的例子 第一行:46,52%,02:36 第二行:38,63%,02:47 在这三个分数的基础上,我可以平均比较哪一个应该是最好的 第一行尝试次数较多,正确率较低,但时间较快

我有一个游戏,用户可以保存在那里的名称和数据库中的分数

纵队

名称、尝试次数、正确率、所用时间、图像集

其中3列基于分数

尝试次数、正确率、所用时间、

目前,我的表显示时间递增

$sql = "SELECT * FROM Score ORDER BY time ASC LIMIT 5";
有没有人可以比较分数

这是一个2分的例子

第一行:46,52%,02:36
第二行:38,63%,02:47

在这三个分数的基础上,我可以平均比较哪一个应该是最好的

第一行尝试次数较多,正确率较低,但时间较快。 第二排尝试次数较少,正确率较高,但时间较慢

在理论上,尝试:ASC,百分比:DESC,时间ASC

如果我将订单更改为:

$sql=“按“时间ASC”、“尝试ASC”、“百分比”从分数顺序中选择*” 描述“限制5”

它会把行弄乱吗?还是会根据所有3行按顺序显示它们

此图像正在使用时间ASC

最低尝试次数为12次,即100%

我需要将尝试与时间进行比较

我可以将时间/尝试除以,然后按结果排序吗

这是正确的吗

$sql = "SELECT * FROM Score ORDER BY time / tries ASC  LIMIT 5";

这篇评论太长了

"Is there away that i can compare on average which of those should be top based on all 3 scores?"
对。但是首先你必须弄清楚这个方法是什么。然后可以在查询中实现它

其次,您的书面查询是:

SELECT *
FROM Score
ORDER BY 'time ASC', 'tries ASC', 'percent DESC'
LIMIT 5;
这不会起任何作用,因为它是按三个常量排序的。删除单引号,仅将其用于字符串常量:

SELECT *
FROM Score
ORDER BY time ASC, tries ASC, percent DESC
LIMIT 5;
实际上,这非常类似于:

ORDER BY time ASC

除非很多人在两行上有完全相同的时间,否则不会使用附加的排序条件。

如果要划分两列,请使用排序结果

$sql = "SELECT * FROM Score ORDER BY time / tries ASC  LIMIT 18446744073709551615";
然后,如果愿意,可以在表中显示该结果

例如

<td>".round($data[4] / $data[2],2)." Seconds</td>
“.round($data[4]/$data[2],2)。”秒
/将时间除以尝试次数,然后用round()换行以将结果取整

在这种情况下,我建议使用循环(???,2),它将输出大约3.53秒

如果您想要平均分数,请使用时间+尝试-百分比

低集可能尝试次数=12 即使试了12次,时间也可能很长 尝试12次会得到100%的值,这是一个很高的值,所以最好减去这个值

12次尝试+1m 30秒-100%


12次尝试+10h 30m 30s-100%

你能提供一个具体的公式或算法来根据这三列对它们进行排序吗?如果我们确切地了解订购的条件,条件订购是可能的。按照您的建议,在“排序依据”中提供多个列将对每个组件的所有行进行排序,而不是对每行的组件进行组合。此外,这些列的数据类型是什么?请发布
SHOW CREATE TABLE Score
的输出。