Som nævnt tidligere er denne blog også lidt at betragte som min digitale hukommelse. Efterhånden er jeg ved at have fundet disse SQL statements så mange gange i mine andre arkiver, at de er ved at hænge ved. Men måske der er andre, der ikke har så meget orden i papirarkiverne som jeg(!?!), og som finde det lettere at slå op på nettet. Her kommer 3 metoder til at slette dubletter i en tabel:
Vi vil gå ud fra en tabel med personer, som har følgende definition:
CREATE TABLE tbl_Person (Id INT IDENTITY(1, 1),FirstName VARCHAR(50),LastName VARCHAR(50))
og målet er at slette dubletter af kombinationen FirstName og LastName.
Metode 1:DELETE tbl_PersonFROM tbl_Person AS P1WHERE EXISTS (SELECT 1 FROM tbl_Person AS P2 WHERE P2.Id > P1.Id and P1.FirstName = P2.FirstName and P1.LastName = P2.LastName)
Skeler man til performance er denne metode noget af det mest effektive man kan komme op med.
Metode 2:DELETE P1FROM tbl_Person AS P1INNER JOIN tbl_Person AS P2 ON P1.FirstName = P2.FirstName AND P1.LastName = P2.LastName AND P1.Id > P2.Id
Og endelig metode 3:DELETE tbl_PersonFROM tbl_Person AS P1WHERE Id > (SELECT MIN(Id)FROM tbl_Person AS P2WHERE P1.FirstName = P2.FirstNameAND P1.LastName = P2.LastName)
Alle tre metoder gør det samme, nemlig sletter dubletter. Som altid når man sletter flere rækker er det en god idé at SELECT’e rækkerne ud før man sletter dem, så man sikrer at det ser rigtigt ud.
Remember Me
Powered by: newtelligence dasBlog 1.8.5223.1
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.
© Copyright 2008, Sune Hansen
E-mail