2017-10-03 11 views
0

を発生する場所IDが、唯一の最も最近のすべての行を選択:重複が私は、データベース内の統計と呼ばれるテーブル持って

| Game_ID | User_ID | Rank | Creation_date | 
--------------------------------------------- 
|  1 |  1 | 1 | 2017-04-03 | 
|  1 |  2 | 2 | 2017-04-03 | 
|  1 |  3 | 3 | 2017-04-03 | 
|  1 |  1 | 4 | 2017-05-03 | 

を私は現在、特定のGame_IDのためのすべての行をフェッチするために、次のクエリを使用します:

"SELECT * FROM Stats WHERE Game_ID = 2 ORDER BY Rank ASC" 

これは、しかし私は、このように、USER_ID(最新CREATION_DATE付き1)ごとに1行のみを戻すしたいと思い、上に示している正確に何を返す:

| Game_ID | User_ID | Rank | Creation_date | 
--------------------------------------------- 
|  1 |  2 | 2 | 2017-04-03 | 
|  1 |  3 | 3 | 2017-04-03 | 
|  1 |  1 | 4 | 2017-05-03 | 

ご協力いただければ幸いです!

EDIT

は、私は上記の解決策を試みたが、私はそれが正しいものである確信しています。私はUser_IDの重複をもう取得しません。しかし、私は最新のCreation_dateを取得していません。私は何が欠けていますか?

更新クエリ:

SELECT a.Game_ID, a.User_ID, a.rank, a.Creation_date 
      FROM stats a 
      INNER JOIN (
       SELECT User_ID, MAX(Creation_date), Creation_date 
       FROM stats 
       WHERE Game_ID = 2 
       GROUP BY User_ID 
      ) b ON a.User_ID = b.User_ID AND a.Creation_date = b.Creation_date ORDER BY rank ASC; 

戻り値:つまり

| Game_ID | User_ID | Rank | Creation_date | 
--------------------------------------------- 
|  1 |  1 | 1 | 2017-04-03 | 
|  1 |  2 | 2 | 2017-04-03 | 
|  1 |  3 | 3 | 2017-04-03 | 

、USER_ID 1.最新のCREATION_DATE

答えて

-1

でない行はこれを試してみてください -

SELECT Game_ID, User_ID, MAX(Rank), Max(Creation_date) 
FROM Stats 
WHERE Game_ID = 2 
GROUP BY Game_ID, User_ID, Creation_date 
ORDER BY Rank, Creation_date 
+0

まだ4つのrオーバース、オーダーの代わりにCreation_dateでオーダー。 – Stim

+0

@Stim、編集したものを試してみてください。 –

関連する問題