20. januar 2003 - 11:23Der 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?
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.
- 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.)
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.
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!
Synes godt om
Ny brugerNybegynder
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.