SQL Server 2008 R2'de INSEE
tablom var. Bazı yinelenen değerlerim var (54 000'den 15 000 satırın silinmesi gerekiyor). Bu aynı iee_nom
, iee_departement
ve iee_type
varsa yinelenen olarakYinelenen SQL isteğini en iyi duruma getirme Değer
declare @datainsee table
(
di_nom varchar(100),
di_departement varchar(5),
di_type varchar
)
declare @datainseeidentifiant table
(
dii_nom varchar(100),
dii_departement varchar(5),
dii_type varchar,
dii_identifiant uniqueidentifier
)
insert into @datainsee select iee_nom,iee_departement,iee_type from insee
group by iee_nom,iee_departement,iee_type
having(count(*)>1)
insert into @datainseeidentifiant
select di_nom,di_code,di_type,
(select top 1 iee_guid from insee where iee_departement=di_departement and iee_nom=di_nom and iee_type= di_type) from @datainsee
delete from insee
where iee_guid not in (select dii_identifiant from @datainseeidentifiant) and iee_nom in (select dii_nom from @datainseeidentifiant)
Satırlar kabul edilir benim şimdiki komut dosyasıdır. ..
benim sorgu optimize etmek herhangi bir fikir ben T-SQL: Deleting all duplicate rows but keeping one gibi çözümlere bakmak çalıştı ama GUID
değil sayıdır çünkü benim durumumda çalışmıyor? Bir dakika, başvurum için çok uzun.
Tabloda otomatik oluşturulan kimlik sütununuz var mı? –
Hayır, yalnızca benzersiz tanımlayıcı olarak GUID. Hayır birincil anahtar no ID .. Ben kötü olduğunu biliyorum ama uygulama gelmeden önce uygulama ve eski bir uygulama sürümüdür. –