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.
Ve işlemimiz.
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)
[/QUOTE]
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