18. august 2005 - 11:47Der er
10 kommentarer og 1 løsning
Slette ens poster i databasen
Hejsa
Hvordan skal mit sql script se ud hvis jeg vil undersøge om en tabel indeholder 2 ens poster og hvis den har så skal den slette den ene? Jeg har prøvet med følgende:
DELETE FROM `StemmerXIp` S1, `StemmerXIp` S2 WHERE S1.ID = S2.ID and S1.IP = S2.IP and S1.StemmerIp <> S2.StemmerIp
Men den vil jo slette begge af de ens poster og ikke kun den ene som er meningen.
Jeg er ikk ehlt med. Min trækker da poster ud hvor både ip og id er ens. Det er det jeg skal have. Men jeg skal kun have posterne vist en gang, således at jeg kan slette dem!
DELETE * FROM StemmerXIp AS xip WHERE exists (select * from StemmerXIp where StemmerId=xip.StemmerId and Id <> xip.Id) and id > (select min(Id) from StemmerXIp where StemmerId=xip.StemmerId);
I den går jeg dog ud fra, at Id er et autonummereringsfelt (primær key), mens StemmerId er forskellig i hver af dubletterne. Det kunne dog fra spørgsmålet godt se ud som om det er omvendt, og i så fald skal det i stedet være:
DELETE * FROM StemmerXIp AS xip WHERE exists (select * from StemmerXIp where Id=xip.Id and StemmerId <> xip.StemmerId) and Stemmerid > (select min(StemmerId) from StemmerXIp where Id=xip.Id);
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.