2017-09-15 2 views
0

Ist es möglich, mehrere Felder mehrerer Zeilen mit einer Unterabfrage zu aktualisieren?Mehrere Felder mehrerer Zeilen mit Unterabfrage aktualisieren

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

Vielleicht so etwas wie das?

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 

Ich habe die Tabellen und Abfragen für den Zweck dieser Stelle vereinfacht, aber das Prinzip ist das gleiche ...

Jede Hilfe dankbar!

Antwort

0

verbinden Sie die beiden Tabellen:

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 
Verwandte Themen