Böyle bir tablomuz olduğunu varsayalım
CREATE TABLE IF NOT EXISTS `test` (`id` int(11) NOT NULL AUTO_INCREMENT,`ad` varchar(255) NOT NULL,PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;INSERT INTO `test` (`ad`) VALUES ('veli'),('ali'),('veli'),('ali'),('veli'),('ali');
Tekrar eden tüm verileri silmek için (Çiftten fazla var ise tercih edilir)
(Not:En son 1 tane bırakılır)
DELETE t1 FROM test t1, test t WHERE t1.id < t.id AND t1.ad = t.ad
Tekrar eden en son eklenen kaydı silme(Genelde çift kayıtlar için)(Son ekleneni silerek)
(Not:3 tane aynı veri var ise 2 tane kalır)
(Not:2 tane aynı veri var ise 1 tane kalır)
(Not:1 tane aynı veri var ise yine 1 tane kalır)
(Yani sürekli tekrarlanırsa 1’er 1’er silerek üstteki yaptığımız işleme ulaşılmış olur)
DELETEFROM testWHERE exists (select * from(select MAX(p.id) ciftid,count(*)FROM test as pGROUP BY p.adHAVING count(*)>1) as ciftWHERE cift.ciftid=test.id)
Çıktısı
+------+| ad |+------+| ali || veli |+------+