mysql比较3列的整体顺序

标签 mysql

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

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

其中 3 列基于分数

尝试次数、正确百分比、花费时间

目前我的表格显示时间是升序的。

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

有没有办法比较分数

这是 2 个分数的示例

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

我是否可以根据所有 3 个分数平均比较哪一个应该是最高的。

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

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

如果我将订单更改为:

$sql = "SELECT * FROM Score ORDER BY 'time ASC', 'tries ASC', 'percent DESC' LIMIT 5";

它会弄乱行还是会按照基于所有 3 个的顺序显示它们

此图像使用时间 ASC This is using time ASC

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

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

我可以划分时间/尝试,然后按结果排序

正确吗?

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

最佳答案

如果您想划分 2 列,则使用该结果进行排序

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

然后,如果您愿意,可以在表格中显示该结果

例如

<td>".round($data[4] / $data[2],2)." Seconds</td>

/将时间除以尝试次数,然后用 round() 包裹以向下舍入结果。

在这种情况下,我会推荐 round(??? ,2) ,它将输出类似 3.53 秒的内容

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

最低可能尝试次数 = 12 即使尝试了 12 次,时间仍然很长 尝试 12 次将得到 100%,这是一个很高的值,因此最好减去该值。

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

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

关于mysql比较3列的整体顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21247661/

相关文章:

php - While 循环可以用来捕捉错误吗?

mysql - Laravel/MySql 中的多态与普通数据库设计

mysql - 数据库条目末尾的奇怪字符

php - magento 1.5 产品评论存储在哪里?

mysql - Rails DB rake 任务运行但永不退出

mysql - 从 tbl2 中未列出的 tbl1 中选择

java - 在 hibernate 中更新数据库模型

sql - MySQL + MyISAM 中的 "System lock"

MySQL 多语言编码 |错误代码 : 1366. 错误的字符串值: '\xCE\x09DIS'

mysql - 根据另一个表列中的值过滤一个表