SORU
20 AĞUSTOS 2008, ÇARŞAMBA


Nasıl yinelenen satırları kaldırmak miyim?

Oldukça büyük bir tablo (yani 300,000 satır) yinelenen satırları kaldırmak için en iyi yolu nedir?

Elbette satır Rowıd kimlik alanına varlığından dolayı çiftleri mükemmel olmayacak.

MyTable
-----------
RowID int not null identity(1,1) primary key,
Col1 varchar(20) not null,
Col2 varchar(2048) not null,
Col3 tinyint not null

CEVAP
20 AĞUSTOS 2008, ÇARŞAMBA


Hiçbir boşluk varsayarsak, benzersiz sütunlar GROUP BY, MİN (veya MAX) tutmak için satır olarak Rowıd SEÇİN. O zaman, sadece bir satır kimliği yoktu herşeyi silmek:

DELETE MyTable 
FROM MyTable
LEFT OUTER JOIN (
   SELECT MIN(RowId) as RowId, Col1, Col2, Col3 
   FROM MyTable 
   GROUP BY Col1, Col2, Col3
) as KeepRows ON
   MyTable.RowId = KeepRows.RowId
WHERE
   KeepRows.RowId IS NULL

Kullanın

CONVERT(uniqueidentifier, MIN(CONVERT(char(36), MyGuidColumn))) 

eğer bir tamsayı yerine bir GUID varsa MİN(Rowıd) yerine

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Autocar

    Autocar

    11 Mart 2006
  • Hot For Nutrition

    Hot For Nutr

    26 ŞUBAT 2007
  • UlyssesForever's channel

    UlyssesForev

    28 ŞUBAT 2012