2017-09-04 68 views
-2

我有這樣的數據:更新或插入不同的條件

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 

這個數據我想遷移到一個新的表,這個想法是,如果水平,id_game和USER_ID已經插入,我看向最高分。因此,對於這個例子,我想保存:

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

我想在一個單獨的SQL做的,我試過somethink這樣的:

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. 

但不起作用。你能幫我嗎 ?

+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;