5

简而言之,我有一个游戏,它的计分板显示了玩家最后的得分 + 他们花了多长时间完成它。我需要对我的 MySQL 结果进行排序,以便最快时间的最高分排在第一位,时间最慢的最低分排在最后,并且两者之间的所有内容都以相同的方式排名。但我不知道该怎么做,这是我的sql:

$sql1 = "SELECT * FROM boobmatch_highscores ORDER BY t_score DESC, time ASC";

任何帮助将不胜感激!

表中数据:

Score       Time
23        00:04:32
23        00:04:31
25        00:02:32
16        00:06:32
35        00:04:32
2         00:01:17
-13       00:19:32
-3        00:07:27
4

6 回答 6

11

您的查询应该可以完美运行。如果您有任何问题,只需将字段名称括在引号中,如下所示:

$sql1 = "SELECT * FROM boobmatch_highscores ORDER BY `t_score` DESC, `time` ASC";

猜测它是 MySQL,否则引号将不是必需的

于 2012-05-31T13:37:25.817 回答
1

你应该使用下面的代码..它的工作。

$query = "SELECT field1, field2 from tablename ORDER BY field1 DESC, field2 DESC";
于 2013-08-17T08:33:52.677 回答
0

我认为这是按多值排列顺序的最佳解决方案。

 SELECT * FROM hotel   
   WHERE confId=13   
   GROUP BY hotelName   
   ORDER BY CASE
   WHEN rating = '5 Star' THEN 1 WHEN rating = '4 Star' THEN 2   
   WHEN rating = '3 Star' THEN 3 WHEN rating = 'BUDGET & EQUIVALENT HOTELS' THEN 4 
 END
于 2013-08-19T08:44:10.070 回答
0

您必须使用此查询:

select * from boobmatch_highscores order by time ASC, t_score DESC

现在时间按升序显示,分数按降序显示。

于 2014-01-04T05:23:45.433 回答
0

您应该使用整数列time而不是 varchar,
这意味着转换00:19:32为仅 1172 秒,
然后很容易进行排序

于 2012-05-31T13:42:49.387 回答
-2

试试看嘛

$sql1 = "SELECT * FROM boobmatch_highscores ORDER BY t_score * time DESC";
于 2012-05-31T13:32:20.333 回答