MySQL按两个值排序

时间:2012-05-31 13:30:40

标签: php mysql sql-order-by

简而言之,我有各种各样的游戏,它的得分板显示了最终玩家的得分+实现它的时间。我需要订购我的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

6 个答案:

答案 0 :(得分:10)

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

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

猜测它是MySQL,否则报价不是必需的

答案 1 :(得分:1)

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

$query = "SELECT field1, field2 from tablename ORDER BY field1 DESC, field2 DESC";

答案 2 :(得分:0)

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

答案 3 :(得分: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

答案 4 :(得分:0)

您必须使用此查询:

select * from boobmatch_highscores order by time ASC, t_score DESC

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

答案 5 :(得分:-2)

试试

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