Jeg ville køre en markør (med MySQL SP programmeringssprog, Java, Python, .NET) på denne forespørgsel:
select Name, Firstname, Lastname, count(1)
from Pruebas
group by Name, Firstname, Lastname
having count(1) > 1
Derefter, på de returnerede rækker fra markøren, skal du bare gøre, hvad du skal:kontrollere for FIN%-forekomsten, kontrollere for PersonalKeys tilstedeværelse og opdatere i overensstemmelse hermed.
For hver række på markøren kan du åbne en anden markør med:
select *
from Pruebas
where Name = the_Name
and Firstname = the_Firstname
and Lastname = the_Lastname
Og nu vil du have en indre markør med alle de rækker, du vil ændre. Hvis det er den, du har brug for, så behold den og opdater den med den KEY-værdi, du nævnte. Ellers skal du slette den.
I Oracle kan du opnå det, du ønsker, i én forespørgsel, men jeg tror ikke, at du på den måde får den samme ydeevne, som du ville have med denne tilgang.
Håber det hjælper.