Sıkça kullanmak zorunda kalabildiğimiz bu konuyu Cengiz Han hoca paylaşmış, hemen arşivime ekliyorum.
Örnek olarak PERSONEL_KIMLIK adında ve çeşitli türlerde personel kimlik bilgilerini tutabilen bir tablo üzerinde aynı PERSONEL_NO ve aynı KIMLIK_BILGI türüne sahip kayıtların olduğunu varsayalım. Yani yeni kimlik bilgisi girilirken, eski kaydın silinmediği bir durum olabilir.
SELECT * FROM PERSONEL_KIMLIK p1
where exists (
select 1 from PERSONEL_KIMLIK p2
where p2.PERSONEL_NO=p1.PERSONEL_NO
and p2.KIMLIK_BILGI_TURU=p1.KIMLIK_BILGI_TURU
group by PERSONEL_NO,KIMLIK_BILGI_TURU
having p1.id<max(p2.id)
);
Sorgu neticesinde tekrar eden kayıtları görebiliriz. Bundan sonra ya update edeceğiz ya delete. O artık bizim elimizde :)
Tıpkı Cengiz hocanın dediği gibi, bu sorgulara ihtiyacımız olmaması dileğiyle.