Çift veya Birden Fazla Kayıtları Düzenleme, Silme

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)

DELETE  
  FROM test 
    WHERE exists (  
      select * from  
        (select MAX(p.id) ciftid,count(*) 
          FROM test as p  
            GROUP BY p.ad 
              HAVING count(*)>1 
        ) as cift 
        WHERE cift.ciftid=test.id  
    )

Çıktısı

+------+
|  ad  |
+------+
| ali  |
| veli |
+------+

 

Sizin Değerli Görüşlerinize İhtiyacımız Var.