mysql整体比较3列的顺序

时间:2014-01-21 01:49:28

标签: mysql

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

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

这些列中有3个基于分数

尝试,百分比正确,花费时间,

目前我的表显示时间正在上升。

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

是否有比较分数

这是2分的一个例子

第1行: 46,52%,02:36
第2行: 38,63%,02:47

在那里,我可以平均比较哪些应该是基于所有3个分数的顶部。

第一行有更多的尝试,更少的百分比正确但更快的时间。 第二行尝试次数较少,百分比较高,但时间较慢。

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

如果我将订单更改为:

  

$ sql =“SELECT * FROM得分ORDER BY'时间ASC','尝试ASC','百分比   DESC'限制5“;

它会使行混乱,还是会根据所有3

的顺序显示它们

此图片正在使用时间ASC This is using time ASC

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

我需要将Tries与时间进行比较

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

是对的吗?

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

2 个答案:

答案 0 :(得分:1)

如果要分割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%

答案 1 :(得分:0)

评论太长了。

"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

除非很多人在两行上的时间完全相同,否则不会使用额外的订购标准。