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

  • Ayite Atiwoto (superjiffrey)

    Ayite Atiwot

    29 EYLÜL 2010
  • FPSRussia

    FPSRussia

    19 NİSAN 2010
  • International Secret Agents Concerts

    Internationa

    2 Aralık 2008