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

  • Chanre Joubert

    Chanre Joube

    27 Temmuz 2012
  • Dive In

    Dive In

    17 Temmuz 2013
  • skiesofblack.net

    skiesofblack

    14 HAZİRAN 2009