İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

mysql da çift kayıtlar

hakimi

0
İyinet Üyesi
Katılım
1 Temmuz 2006
Mesajlar
1,356
Reaction score
0
arkadşlar. mysql da bulunan çift kayıtları nasıl silebilirim. mesela 20.000 lik bir db de 1500 tane çift kayıt var diyelim. çift kayıtları nasıl teke düşürebiliriz??
 

iyinet

Root
Admin
Hosting Firması
Katılım
2 Eylül 2002
Mesajlar
5,028
Reaction score
66
Konum
Sakarya
arkadşlar. mysql da bulunan çift kayıtları nasıl silebilirim. mesela 20.000 lik bir db de 1500 tane çift kayıt var diyelim. çift kayıtları nasıl teke düşürebiliriz??

Cift kayitlarin oldugu tablo adinin ciftli_tablo ve cift kayitlarin email alani uzerinde oldugunu varsayalim.

CREATE TABLE tekil_tablo select * from ciftli_tablo where 1=2;
ALTER TABLE tekil_tablo ADD PRIMARY KEY (email);
INSERT IGNORE INTO tekil_tablo SELECT * FROM ciftli_tablo;
RENAME TABLE ciftli_tablo TO ciftli_tablo_eski;
RENAME TABLE tekil_tablo TO ciftli_tablo;

Bu komutlari calistirmanizin ardindan ciftli_tablo da artik tum emailler tekil olacaktir.

Eger cift kayitlar 1 den fazla alan uzerinde ise yukaridaki komut zincirindeki 2. satirdaki komutu asagidaki sekilde degistirebilirsiniz:

ALTER TABLE tekil_tablo ADD PRIMARY KEY (email,ad,soyad,adres);
 

Mywedding

1
İyinet Üyesi
Katılım
26 Eylül 2006
Mesajlar
5,893
Reaction score
96
Konum
www.odatv.com
merhabalar , benimde yorum tablomda yorumlar bazen çift ve daha çok çıkabiliryor.
ne yapabilirim , yardımcı olması bakımından tablo aşağıda ;

CREATE TABLE `iddap_comments` (
`pid` mediumint(10) NOT lisanssız default '0',
`msg_id` mediumint(10) NOT lisanssız auto_increment,
`msg_author` varchar(25) NOT lisanssız default '',
`msg_body` text NOT lisanssız,
`msg_date` datetime NOT lisanssız default '0000-00-00 00:00:00',
`msg_raw_ip` tinytext,
`msg_hdr_ip` tinytext,
`author_md5_id` varchar(32) NOT lisanssız default '',
`author_id` int(11) NOT lisanssız default '0',
PRIMARY KEY (`msg_id`),
KEY `com_pic_id` (`pid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Used to store comments made on pics' AUTO_INCREMENT=9954 ;
 

iyinet

Root
Admin
Hosting Firması
Katılım
2 Eylül 2002
Mesajlar
5,028
Reaction score
66
Konum
Sakarya
merhabalar , benimde yorum tablomda yorumlar bazen çift ve daha çok çıkabiliryor.
ne yapabilirim , yardımcı olması bakımından tablo aşağıda ;

CREATE TABLE `iddap_comments` (
`pid` mediumint(10) NOT lisanssız default '0',
`msg_id` mediumint(10) NOT lisanssız auto_increment,
`msg_author` varchar(25) NOT lisanssız default '',
`msg_body` text NOT lisanssız,
`msg_date` datetime NOT lisanssız default '0000-00-00 00:00:00',
`msg_raw_ip` tinytext,
`msg_hdr_ip` tinytext,
`author_md5_id` varchar(32) NOT lisanssız default '',
`author_id` int(11) NOT lisanssız default '0',
PRIMARY KEY (`msg_id`),
KEY `com_pic_id` (`pid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Used to store comments made on pics' AUTO_INCREMENT=9954 ;

Yukarida anlattiklarim gecerli yine.
Cift kayitlar hangi kayit ustunde ise o tablo uzerinde primary key yaratin, yada unique index.

CREATE TABLE tekil_tablo select * from iddap_comments where 1=2;
ALTER TABLE tekil_tablo ADD PRIMARY KEY (msg_body);
INSERT IGNORE INTO tekil_tablo SELECT * FROM iddap_comments;
RENAME TABLE iddap_comments TO iddap_comments_eski;
RENAME TABLE tekil_tablo TO iddap_comments;
 

iyinet

Root
Admin
Hosting Firması
Katılım
2 Eylül 2002
Mesajlar
5,028
Reaction score
66
Konum
Sakarya

hakimi

0
İyinet Üyesi
Katılım
1 Temmuz 2006
Mesajlar
1,356
Reaction score
0
Çok teşekkürler iyinet. Yardımların için. Sorunumuz çözüldü :)))
 

Ozcan

0
İyinet Üyesi
Katılım
12 Mayıs 2007
Mesajlar
3,749
Reaction score
59
Konum
Antalya
hocam benim de sorunum şu id alanı primari key birde email alanı var. Şimdi çift mail ile kayıt girilmemesi için mail alanını primery key yapmaya çalışıyorum şu hata çıkıyor.

ALTER TABLE `ytb` DROP PRIMARY KEY ,
ADD PRIMARY KEY ( `mail` )

MySQL çıktısı: Belgeler
#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

tabloyu silip yeniden denedim bu sefer id alanıyla mail alanını ikisini birden primery key yapıyor bu yüzden gene mail adresleri yeniden girile biliyor. Access gibi çalıştığını zannediyorum. Mysql i yeni yeni öğreniyorumda. Yani benim kayıtlı olan kayıtları girmemem için muhtemelen mail alanını primary key yapmam lazım fakat varchar(50) olduğundan mı dır yoksa id alanının auto incornet olmasından mıdır bi türlü bulamadım . kayıt işlemleride seri bir şekilde 15 li yapılıyor yani sürekli bu varmı bunu kontrol et deyip sonra kayıt yaptırmak biraz işleri uzatır.
 

iyinet

Root
Admin
Hosting Firması
Katılım
2 Eylül 2002
Mesajlar
5,028
Reaction score
66
Konum
Sakarya
hocam benim de sorunum şu id alanı primari key birde email alanı var. Şimdi çift mail ile kayıt girilmemesi için mail alanını primery key yapmaya çalışıyorum şu hata çıkıyor.

ALTER TABLE `ytb` DROP PRIMARY KEY ,
ADD PRIMARY KEY ( `mail` )

MySQL çıktısı: Belgeler
#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

tabloyu silip yeniden denedim bu sefer id alanıyla mail alanını ikisini birden primery key yapıyor bu yüzden gene mail adresleri yeniden girile biliyor. Access gibi çalıştığını zannediyorum. Mysql i yeni yeni öğreniyorumda. Yani benim kayıtlı olan kayıtları girmemem için muhtemelen mail alanını primary key yapmam lazım fakat varchar(50) olduğundan mı dır yoksa id alanının auto incornet olmasından mıdır bi türlü bulamadım . kayıt işlemleride seri bir şekilde 15 li yapılıyor yani sürekli bu varmı bunu kontrol et deyip sonra kayıt yaptırmak biraz işleri uzatır.

PRIMARY KEY i drop etme, o autoincrement icin gerekli.
mail i tekil yapmak icin

ALTER TABLE `ytb` ADD UNIQUE (`mail` ) ;
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

seo ajansı , sosyal medya yönetimi
Üst