मुझे नहीं लगता कि आपको लूप की जरूरत है। मुझे लगता है कि आपकी आईडी प्राथमिक कुंजी है और आप अपने उदाहरण में कई बार क्रैंक दोहराने का मतलब नहीं रखते थे।
क्या कुछ इस तरह काम करेगा?
राज ए की टिप्पणी के अनुसार संपादित करें। यह केवल उन पंक्तियों को अपडेट करेगा जहां अन्य क्षेत्रों में से एक बदल गया है। ध्यान दें कि यह उन पंक्तियों को अपडेट नहीं करेगा जहां एक NULL है और दूसरा 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 ...]