1

私のデータベース構造

Table 'Player'   : column 'id'
Table 'Score'    : column 'player_id' , 'score' , 'time'

テーブル「スコア」のサンプルデータ

   player_id       score             time
     1001           100      2000-01-01 00:00:00
     1001             3      2012-08-01 00:00:00
     1001            11      2012-08-02 00:00:00
     1002            80      2012-07-01 00:00:00
     1002             5      2012-08-01 00:00:00
     1003            90      2012-07-01 00:00:00

使ってみます

SELECT * FROM Score WHERE MONTH(time) = MONTH(NOW()) ORDER BY score DESC

プレーヤー 1001 の結果はスコア 11 と 3 の複数行になります。
プレーヤー 1001 のスコア 11 のみになるはずの時間の長さで最大スコアのみを並べ替えて取得する方法

結果は

   player_id       score             time
     1001            11      2012-08-02 00:00:00
     1002             5      2012-08-01 00:00:00

いいえ

   player_id       score             time
     1001            11      2012-08-02 00:00:00
     1001             3      2012-08-01 00:00:00
     1002             5      2012-08-01 00:00:00
4

2 に答える 2

2
SELECT player_id, max(score) as max_score
FROM Score 
WHERE MONTH(time) = MONTH(NOW()) 
group by player_id
ORDER BY max_score DESC
于 2012-08-16T10:15:23.870 に答える
1

これを試して:

SELECT player_id, max(score) as score, month(time)
FROM Score 
WHERE MONTH(time) = MONTH(NOW()) 
GROUP BY Player_id, month(time)
ORDER BY score DESC
于 2012-08-16T10:15:35.127 に答える