•         

            

            

  • HyperFilter | DoS Protection | DDoS Protection | DoS Mitigation | DDoS Mitigation | AntiDoS | AntiDDoS | Proxy Shielding

Tablonuzdaki tekrar kayıtlarını temizlemek

Katılım
11 Ocak 2012
Mesajlar
12,856
Tekrar eden kayıtları tespit edip, temizlemeye yarar. İşlemi yaptıktan sonra primary key kullanmanızı öneririm özellikle item ve magic tablolarınız için.



Kırmızı bölgelere veritabanınızın adı.

Mavi bölgelere temizlenecek tablonuzun adı.

Turuncu bölgelere çift değerlerin kontrol edileceği sutun.



Yedeğinizi mutlaka alın.



Öncelikle tekrar eden kayıtlara bir göz atalım, çıkan sonuçta dublicate sutunu tekrar sayısını verir. Eğer tekrar sayınız örneğin 3 ise tekrar eden 2''sini temizler.

View hidden content is available for registered users!



Ve işlemimiz.

Kod:
USE [COLOR="Red"]KO_S1[/COLOR]

GO



DECLARE @Count int = 0, @MagicID int



DECLARE Dublicate CURSOR FAST_FORWARD FOR



SELECT [COLOR="DarkOrange"]iNum[/COLOR], COUNT([COLOR="DarkOrange"]iNum[/COLOR]) - 1 FROM [COLOR="blue"]MAGIC_TYPE4[/COLOR] GROUP BY [COLOR="DarkOrange"]iNum[/COLOR] HAVING COUNT([COLOR="DarkOrange"]iNum[/COLOR]) > 1



OPEN Dublicate



FETCH NEXT FROM Dublicate INTO @MagicID, @Count



WHILE @@FETCH_STATUS = 0

BEGIN

	SET ROWCOUNT @Count

	DELETE FROM [COLOR="blue"]MAGIC_TYPE4[/COLOR] WHERE [COLOR="DarkOrange"]iNum[/COLOR] = @MagicID

	SET ROWCOUNT 0

	FETCH NEXT FROM Dublicate INTO @MagicID, @Count

END



CLOSE Dublicate 

DEALLOCATE Dublicate



Farklı çeşitlerini isteyen olursa konu altından belirtebilir. Birden fazla sutunun kontrol edilmesi gibi.



Ek olarak karakter veri tiplerine sahip sutunlar için (TB_USER)

Kod:
USE KO_MAIN

GO



DECLARE @Count int = 0, @CheckID varchar(21)



DECLARE Dublicate CURSOR FAST_FORWARD FOR



SELECT strAccountID, COUNT(strAccountID) - 1 FROM TB_USER GROUP BY strAccountID HAVING COUNT(strAccountID) > 1



OPEN Dublicate



FETCH NEXT FROM Dublicate INTO @CheckID, @Count



WHILE @@FETCH_STATUS = 0

BEGIN

	SET ROWCOUNT @Count

	DELETE FROM TB_USER WHERE strAccountID = @CheckID

	SET ROWCOUNT 0

	FETCH NEXT FROM Dublicate INTO @CheckID, @Count

END



CLOSE Dublicate 

DEALLOCATE Dublicate
[/QUOTE]
 
Cevap: Tablonuzdaki tekrar kayıtlarını temizlemek



eskidende vardı böyle bir editör item tablosu için.
 
Geri
Üst