Jag tror inte att du behöver slingan. Jag antar att dina id är primärnycklar och du menade inte att du skulle upprepa vevet flera gånger i ditt exempel.
Skulle något liknande fungera?
Redigera enligt Raj A:s kommentar. Detta kommer bara att uppdatera rader där ett av de andra fälten har ändrats. Observera att detta inte kommer att uppdatera rader där den ena är NULL och den andra inte är NULL.
MERGE INTO final T
USING ( SELECT id, score, crank, urank FROM test ) S
ON ( S.vid = T.id AND
( S.crank != T.crank OR S.score != T.score OR S.urank != T.urank ))
WHEN MATCHED SET crank = S.crank, score = S.score,
crank = S.crank, urank = S.urank
WHEN NOT MATCHED THEN INSERT
[... not sure what you want to do in this case ...]