MYSQL'de iki sütunda birden tekrar eden kayıtları bulup teke düşürmek istiyorum.
Örnek şema:
id | ad | yaş | cinsiyet
---------------------------------
1 | ali | 18 | erkek
2 | veli | 11 | erkek
3 | ayşe | 21 | kadın
4 | ali | 14 | erkek
Bu şemada AD ve CİNSİYET verilerinin her ikisi de aynı olan kayıtları teke düşürmek istiyorum. 1. ve 4. kayıtların ad ve cinsiyet sütunları birbirinin aynısı. Bunlardan birini silmem gerekiyor.
PHP ile çözebiliyorum fakat database çok büyük ve aynı işlem birkaç büyük tabloda tekrarlanacak. SQL üzerinde bir çözüm arıyorum.
Yardımlarınız için şimdiden teşekkürler.
EDIT:
Çözümü buldum, başkalarının da işine yarayabilir diye paylaşıyorum.
// ad ve cinsiyet sütunlarında tekrar eden kayıtlar varsa getirir, select * yerine delete uyeler from uyeler yazarsanız kayıtları teke düşürür. Dilerseniz aynı yapıyı kullanarak karşılaştıracağınız sütun sayısını artırabilirsiniz. (Denemeden önce mutlaka yedek alın.)
SELECT *
FROM uyeler ta
INNER JOIN
(
select min(id) minid,ad,cinsiyet
from uyeler
group by ad,cinsiyet
having count(*) > 1
) t
ON ta.ad = t.ad and ta.cinsiyet = t.cinsiyet and t.minid = ta.idİyi çalışmalar.