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ş:
Nasıl RVM (Ruby Version Manager) kaldı...
Nasıl MAX(Sütun değeri), SQL başka bir...
Nasıl Python ederken bir listesi düzen...
Kaldırmak MySQL yinelenen satırları...
Nasıl Perl bir diziden yinelenen öğele...