我有这些数据:
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
这个数据我想迁移到一个新表,想法是如果已经插入了level,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中做,我尝试过这样的想法:
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.
但不行。你能帮帮我吗?
答案 0 :(得分:1)
SELECT user_id
, id_game
, level
, MAX(score) score
FROM this_data
GROUP
BY user_id
, id_game
, level;
答案 1 :(得分:0)
这是一个简单的查询。
CREATE TABLE <TARGET_TABLE_NAME> SELECT USER_ID,ID_GAME,LEVEL,MAX(SCORE) FROM <SOURCE_TABLE_NAME> GROUP by 1,2,3;