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

  • hans peder sahl

    hans peder s

    22 Temmuz 2009
  • Tom Megalis

    Tom Megalis

    18 NİSAN 2006
  • VideoGamePervert

    VideoGamePer

    30 AĞUSTOS 2008