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

  • OnlyFunClips

    OnlyFunClips

    16 ŞUBAT 2012
  • RawBrahs

    RawBrahs

    28 Aralık 2010
  • UrAvgConsumer

    UrAvgConsume

    1 Ocak 2012