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

timevarcharの代わりに整数列を使用する必要があります。つまり、1172秒に
変換すると 、並べ替えが非常に簡単になります。00:19:32

于 2012-05-31T13:42:49.387 に答える
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 に答える
-2

ちょうど試して

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