20. januar 2003 - 11:23 Der er 4 kommentarer og
2 løsninger

fjernelse af ens poster

Jeg har kopieret en database fra en server til en anden. Ved kopieringen fik jeg ikke nøglerne i tabellerne med og har først opdaget dette lang tid efter. Nu er der genereret en masse poster som er fuldstændig ens fordi databasen ikke har meldt fejlen om duplikerede nøgler. Hvordan får jeg gjort databasen konsistent igen? Lige nu giver de ekstra poster nogle ekstra store resultater ved opsumering af poster i tabellen, så det er et stort problem. Har nogen et script der fjerner alle poster som ligner fuldstændigt hinanden og kun lader en tilbage, eller kender nogen til en funktion i MS SQL der kan gøre det?
Avatar billede sbm Nybegynder
31. januar 2003 - 17:40 #1
Den "nemmeste" løsning er nok at lave en
SELECT DISTINCT(*) FROM TABELNAVN

Læs hele pivtøjet ind.

Derefter sletter du alle rækker i tabellen.

Kør resultatet fra første forespørgsel igennem, og opret alle rækkerne en gang.
03. februar 2003 - 07:38 #2
Jeg forstår at du vil vælge alle poster som er fuldstændigt forkellige (DISTINCT(*)): Syntaxen: SELECT DISTINCT(*) FROM TABELNAVN fungererer bare ikke i MS SQL.
Avatar billede sbm Nybegynder
06. februar 2003 - 13:50 #3
Så kommer du på overarbejde. ;-)

- Opret en ny tabel, hvor du kan kopiere data over.

- Lav så et lille script der foretager kopieringen.
SELECT DISTINCT(ID) FROM GAMMELT_TABEL_NAVN
Det vil skaffe dig et enkelt eksemplar af hver ID i din tabel.

- Så kører du igennem en løkke der tager hvert ID og laver en fuld select i den gamle tabel:
SELECT * FROM GAMMELT_TABEL_NAVN WHERE ID = $id

- Indsæt data fra din select til din nye tabel
INSERT INTO NYT_TABEL_NAVN (kolonne1, kolonne2, kolonne3 ....osv...) VALUES (value1, value2, value3 ...... osv.....)
Husk kun at læse den FØRSTE række fra din select, for ellers får du bare oprettet dem flere gange (igen.)
21. januar 2004 - 21:48 #4
sbm> hvis du svarer får du point. Tak for hjælpen.
Avatar billede sbm Nybegynder
21. januar 2004 - 22:27 #5
Tak som byder. Men 200 point for den arbejdsindsats jeg her har lavet er alt for meget. Smid selv et svar. Giv mig en 30-50 stykker og tag resten selv.
22. januar 2004 - 07:59 #6
Ok, men jeg har ingen anelse om hvor meget tid du har brugt på det. Nogen ta'r turen igennem sql-manualen og andre gør ikke:) Tak for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester