Türkiye'nin En Eski Webmaster Forumu İyinet'e Hoşgeldiniz!

mysql de mükerrer kayıtların silinmesi

CMYLMZ

0
Onaylı Üye
Üye
Katılım
8 Aralık 2006
Mesajlar
1,775
Açılan Konu
73
Tepki puanı
0
Konum
Forumdan ayrıld
Mysql in kendi içinde böyle bir yapılanma varmıdır acaba ?

mysql e bakarken phpmyadmin kullanıyorum belki onun içinde vardır.

Eğer her ikisi de yoksa izlemem gereken yolu önerebilirmisiniz ?

saygılar
 

pembekedi

0
Onaylı Üye
Üye
Katılım
3 Şubat 2005
Mesajlar
1,607
Açılan Konu
92
Tepki puanı
1
Konum
Neverland
ah cmylmzcım ah : )

mükerrer : tekrarlanmış yenilenmiş.

phpmyadmin emin değilim ama php ile kodu yazılabilir. önce tüm veriler kontrol edilir aynı olanlar silinebilir. birebir olanlar için % kullanılmadan aratılıyordu sanırım.
 

CMYLMZ

0
Onaylı Üye
Üye
Katılım
8 Aralık 2006
Mesajlar
1,775
Açılan Konu
73
Tepki puanı
0
Konum
Forumdan ayrıld
Walla elime geçicek olan 1 milyon kayıtta makine geberebilir die sormuştum :)
hem mükerrer kelimesini yanlış yerdemi kullandım acaba
çağa ayak uydurmakta zorlanıyorum napim :D
 

iyinet

Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,034
Açılan Konu
485
Tepki puanı
75
Konum
SEO
Mysqle has değil, tüm SQL tabanlı veritabanlarında aşağıdaki SQL ile çift kayıtları bulabilirsiniz:

select id,count(*) from tablo group by id having count(*) > 1
 

CMYLMZ

0
Onaylı Üye
Üye
Katılım
8 Aralık 2006
Mesajlar
1,775
Açılan Konu
73
Tepki puanı
0
Konum
Forumdan ayrıld
iyinet çok teşekkür ederim ama şöyle birşey olduğunda bu pek yardımcı olmuyor
eğer Users database'inde UserName sahasında 3 adet "ahmet" varsa sadece birini siliyor. ama ben tek bir kayıt kalsın bölümüne takıldım
 

iyinet

Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,034
Açılan Konu
485
Tepki puanı
75
Konum
SEO
iyinet çok teşekkür ederim ama şöyle birşey olduğunda bu pek yardımcı olmuyor
eğer Users database'inde UserName sahasında 3 adet "ahmet" varsa sadece birini siliyor. ama ben tek bir kayıt kalsın bölümüne takıldım

Users databasinde 3 ahmet olması, 3 çift kayıt anlamına gelmez aslında ama sanırım sen o şekilde anlatmak istedin.
Verdiğim sql 2 ve 2 den fazla (çift ve üstü) kayıtları göstermek içindir, silmek için değildir.
Sizin yapacağınız bu komutu kullanarak mantığı oluşturmak.

Tablo yapısını verirseniz örnek ile nasıl çift kayıtları SQL ile sileceğinizi anlatabilirim.
 

CMYLMZ

0
Onaylı Üye
Üye
Katılım
8 Aralık 2006
Mesajlar
1,775
Açılan Konu
73
Tepki puanı
0
Konum
Forumdan ayrıld
iyinet aslında doğru söylüyorsun ben yanlış ifade etmişim
tablo yapım aşağıdaki gibidir. yardımların içinde çok teşekkür ederim

Kod:
CREATE TABLE `Users` (
  `id` int(11) NOT lisanssız auto_increment,
  `UserName` varchar(8) NOT lisanssız default '',
  `Active` char(1) NOT lisanssız default 'P',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=41789833 ;
 

iyinet

Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,034
Açılan Konu
485
Tepki puanı
75
Konum
SEO
iyinet aslında doğru söylüyorsun ben yanlış ifade etmişim
tablo yapım aşağıdaki gibidir. yardımların içinde çok teşekkür ederim

Kod:
CREATE TABLE `Users` (
  `id` int(11) NOT lisanssız auto_increment,
  `UserName` varchar(8) NOT lisanssız default '',
  `Active` char(1) NOT lisanssız default 'P',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=41789833 ;

Çift kayıt silmeyi daha önce anlatmıştım, şimdi senin tablon için anlatalım:

Kod:
CREATE TABLE tekil_tablo select * from Users where 1=2;
ALTER TABLE tekil_tablo ADD PRIMARY KEY (UserName);
INSERT IGNORE INTO tekil_tablo SELECT * FROM Users;
RENAME TABLE Users TO Users_eski;
RENAME TABLE tekil_tablo TO Users;

Bu işlemlerden sonra çift kayıtların tutlduğu Users tablosu Users_eski olarak saklı tutulacak, Users tablosu ise çiftl kayıtlardan ayıklanmış olacaktır.
 

CMYLMZ

0
Onaylı Üye
Üye
Katılım
8 Aralık 2006
Mesajlar
1,775
Açılan Konu
73
Tepki puanı
0
Konum
Forumdan ayrıld
iyinet sanada Rep verilirmi bilmiyorum ama çok teşekkür ederim .
beni Ciddi bir dertten kurtardın çok teşekkürler
 
Üst