2017-09-15 14 views
0

サブクエリを使用して複数の行の複数のフィールドを更新できますか?サブクエリを使用して複数の行の複数のフィールドを更新する

cdu_user_progress:

------------------------------------------ 
|id |lesson_id |game_id |score |duration | 
------------------------------------------ 
|1 |1   |0  |50 |2500  | 
|1 |1   |1  |75 |2500  | 
|1 |2   |0  |0  |10000 | 
|1 |3   |0  |25 |1000  | 
|1 |3   |1  |25 |40000 | 
|1 |3   |2  |90 |3000  | 
|1 |4   |0  |50 |5000  | 
------------------------------------------ 

cdu_user_progress2

------------------------------------------ 
|id |lesson_id |game_id |score |duration | 
------------------------------------------ 
|1 |1   |0  |0  |0  | 
|1 |1   |1  |0  |0  | 
|1 |2   |0  |0  |0  | 
|1 |3   |0  |0  |0  | 
|1 |3   |1  |0  |0  | 
|1 |3   |2  |0  |0  | 
|1 |4   |0  |0  |0  | 
------------------------------------------ 
たぶん

このような何か? ...

UPDATE cdu_user_progress2 
SET 
    score = sq.score, 
    duration = sq.duration 
FROM (
    SELECT 
     up.lesson_id AS lesson_id, 
     up.game_id AS game_id, 
     up.score AS score, 
     up.duration AS duration 
    FROM 
     cdu_user_progress up 
) sq 
WHERE 
    lesson_id = sq.lesson_id AND 
    game_id = sq.game_id 

は、私がこの記事の目的のためにテーブルやクエリを簡素化しましたが、原理は同じである

すべてのヘルプ感謝します!

答えて

0

だけで2つのテーブルを結合する:

UPDATE cdu_user_progress2 AS up2 
JOIN cdu_user_progress AS up ON up2.lesson_id = up.lesson_id AND up2.game_id = up.game_id 
SET up.score = up2.score, up.duration = up2.duration 
関連する問題