webForumDet fria alternativet
Logga in / Bli medlem

radera dubletter

Databaser & SQL

5 svar · 314 visningar · startad av OveRRidE

Medlem sedan feb. 200112 078 inlägg
Frågan#1

Jag skall sortera ut en databas som innehåller ungefär 10-15000 rader och göra mig av med alla dubletter i ett visst antal kolumner.

Man kan ju använda en SQL-sats för att välja alla som inte är dubletter genom att använda DISTINCT på ett par kolumner, men om jag vill ta bort alla som är dubbla direkt, hur gör jag då?

(Accessdatabas. :))

Medlem sedan dec. 200012 464 inlägg
#2

Har du en räknarkolumn med i tabellen?

I så fall

delete from t where id not in 
(select min(id) from t
  group by duplicate_column1,
duplicate_column2,...)

annars så kan alltid skapa en kopia av din tabell som bara innehåller de distinkta värdena och sedan kopiera tillbaka dessa

select distint * into tc from t 
delete from t
insert into t select * from tc
drop table tc
Medlem sedan feb. 200112 078 inlägg
#3

Jag skall testa!

Återkommer ifall det uppstår problem. Tack! :)

Red) Inte helt vaken alltså.. ;)

Medlem sedan feb. 200112 078 inlägg
#4
syntax error in FROM clause

:(

Så här se strängen ut, jag tog bort drop table eftersom jag vill ha kvar den även efter satsen.

select distinct * into t_distinct from import delete from import insert into import select * from t_distinct

Tabellerna:
* import - all data från början
* t_distinct - tempdatan

Medlem sedan feb. 200112 078 inlägg
#5

Äsch.. jag körde på den översta istället, då funkade det kanon!

Tack!

Medlem sedan dec. 200012 464 inlägg
#6

Om du vill ha flera statement i en fråg så måste det vara ; mellan de olika satserna. Nu är jag osäker på om Access klarar av det, så du måste kanske göra olika executeanrop.

266 ms totalt · 4 externa anrop · v20260731065814-full.05830320
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)