Ich würde einen Cursor (mit der Programmiersprache MySQL SP, Java, Python, .NET) auf diese Abfrage ausführen:
select Name, Firstname, Lastname, count(1)
from Pruebas
group by Name, Firstname, Lastname
having count(1) > 1
Führen Sie dann in den vom Cursor zurückgegebenen Zeilen einfach alles aus, was Sie tun müssen:Suchen Sie nach der Instanz von FIN%, überprüfen Sie, ob PersonalKey vorhanden ist, und aktualisieren Sie entsprechend.
Für jede Zeile auf dem Cursor können Sie einen anderen Cursor öffnen mit:
select *
from Pruebas
where Name = the_Name
and Firstname = the_Firstname
and Lastname = the_Lastname
Und jetzt haben Sie einen inneren Cursor mit allen Zeilen, die Sie ändern werden. Wenn es das ist, was Sie brauchen, behalten Sie es und aktualisieren Sie es mit dem von Ihnen erwähnten KEY-Wert. Ansonsten löschen.
In Oracle könnten Sie alles, was Sie wollen, mit einer einzigen Abfrage erreichen, aber ich glaube nicht, dass Sie auf diese Weise die gleiche Leistung erzielen wie mit diesem Ansatz.
Hoffe es hilft.