1

私はテーブルを持っています。テーブル構成はこんな感じ

ID、ユーザーID、試験ID、スコア、タイミング、日付
1, 1, 2, 4, 3.5, 2013-03-05
2, 2, 2, 3, 2.5, 2013-03-05
3, 3, 3, 5, 1.5, 2013-03-05
4, 4, 2, 4, 3.5, 2013-03-05
5, 2, 4, 1, 4.5, 2013-03-05
6, 3, 2, 2, 5.5, 2013-03-05
7, 1, 1, 0, 2.5, 2013-03-05
8, 5, 3, 3, 1.5, 2013-03-05
9, 2, 2, 2, 3.5, 2013-03-05
10, 1, 2, 5, 5.5, 2013-03-05
11, 4, 1, 4, 4.5, 2013-03-05
12, 2, 2, 2, 2.5, 2013-03-05

ここで、最後の 5 つの試験結果をその個々の試験のランキングとともに表示したいと考えています。

ユーザー 2 が試験 ID が 2 である最後の試験を受けるとします。その場合、ユーザー 2 の位置はその試験についてのみ表示されます。

同時に、ユーザー 4 の Id-11 には、検査 1 の位置が表示されます。

残りの 3 つの ID (10,9,8) についても同じで、1 つのクエリだけですべてが必要です。

ランキング基準は、高スコア、低タイミング、および低ユーザー ID です。

誰でも私を助けてください。

4

1 に答える 1

1

最新の 5 つの試験を一意に抽出し、いくつかの基準で並べ替えようとしていると思いますか? UserIdその場合は、サブクエリを使用してこれを取得できます。これ以上の分類はあなたに任せますが、ここにあなたが必要だと思うものの始まりとフィドルがあります:http://sqlfiddle.com/#!2/8eecd/8

 SELECT * FROM TEST where ID IN
    (SELECT max(id) 
     FROM TEST 
     GROUP BY UserId) 
 ORDER BY id DESC 
 LIMIT 5

ここで行き詰まった場合は、出力に期待するものを提供してください。

于 2013-09-26T21:29:23.573 に答える