Jag skulle köra en markör (med MySQL SP programmeringsspråk, Java, Python, .NET) på den här frågan:
select Name, Firstname, Lastname, count(1)
from Pruebas
group by Name, Firstname, Lastname
having count(1) > 1
Sedan, på de returnerade raderna från markören, gör du bara vad du behöver:leta efter FIN%-instansen, kontrollera om PersonalKey är närvarande och uppdatera därefter.
För varje rad på markören kan du öppna en annan markör med:
select *
from Pruebas
where Name = the_Name
and Firstname = the_Firstname
and Lastname = the_Lastname
Och nu kommer du att ha en inre markör med alla rader du kommer att ändra. Om det är den du behöver, behåll den och uppdatera den med KEY-värdet du nämnde. Annars tar du bort den.
I Oracle kan du åstadkomma vad du vill i en fråga, men jag tror inte att du får samma prestanda som du skulle få med det här tillvägagångssättet.
Hoppas det hjälper.