2017-09-04 7 views
-2

異なる条件を挿入します。レベル、id_gameとUSER_IDがすでに挿入されている場合Updateまたは私はこのデータを持っている

user_id   id_game   level    score 
10     1     1     200 
10     1     1     400 
10     1     2     500 
10     2     1     230 
11     1     1     345 

私は新しいテーブルに移行する。このデータを、アイデアがある、私は最高のスコアを見ます。したがって、この例のために私が保存したい:

INSERT INTO %s (user_id, id_game, level, score) 
         VALUES (%d, %d, %d, %d) ON DUPLICATE KEY UPDATE user_id = %d, id_game = %d, score = %d. 

でもない仕事:

user_id   id_game    level    score 
10     1     1     400 
10     1     2     500 
10     2     1     230 
11     1     1     345 

私は、単一のSQLでやりたい、私はこのようなsomethinkを試してみました。私を助けてくれますか?

+3

※ただし*は意味しませんか?任意のエラー? – Jens

+0

集約MAX()関数とGROUP BYを使用したクエリが役に立ちます。キーは何に基づいていますか? –

+0

@MarkBaker指定されたユーザーのスコアが大きい場合、id_gameレベルスコアが更新されます(存在しない場合)指定されたユーザー、id_game、レベルが挿入されます – user7424312

答えて

1
SELECT user_id 
    , id_game 
    , level 
    , MAX(score) score 
    FROM this_data 
GROUP 
    BY user_id 
    , id_game 
    , level; 
0

これは簡単なクエリです。

CREATE TABLE <TARGET_TABLE_NAME> SELECT USER_ID,ID_GAME,LEVEL,MAX(SCORE) FROM <SOURCE_TABLE_NAME> GROUP by 1,2,3; 
関連する問題