Avatar billede herchin Nybegynder
23. september 2004 - 11:49 Der er 3 kommentarer og
1 løsning

Sletning af dubletter

Hey,
jeg skal have slettet en masse rækker, som har en tuble med samme værdi. Dog skal den sidst fundne række i tabellen ikke slettes.

Tabel:
-----
Column 1  | Column 2
--------------------
        a | b
        a | c
        a | d
        b | c
        c | c
        d | c
        d | e

Her vil jeg gerne have slettet alle rækker undtaget den sidste, som har værdien c i column 2, da disse er dupletter.
Avatar billede arne_v Ekspert
24. september 2004 - 22:48 #1
Det kan du så vidt jeg ved ikke gøre med en enkelt SQL sætning i MySQL 3.x.x og 4.0.x
(godt i 4.1.x og diverse andre databaser).

Hvad med at gemme en kopi af dem du skal bevare, slette alt og kopiere tilbage ?

CREATE TABLE kopi SELECT MAX(col1),col2 FROM original GROUP BY col2
DELETE FROM original
INSERT INTO original SELECT * FROM kopi
DROP TABLE kopi

[utestet - husk backup inden du prøver !!!!]
Avatar billede arne_v Ekspert
24. september 2004 - 22:49 #2
I 4.1.x og ande må man kunne:

DELETE FROM tabel t1 WHERE t1.col1 < (SELECT MAX(col1) FROM tabel t2 WHERE t2.col2=t1.col2)
Avatar billede herchin Nybegynder
28. september 2004 - 16:55 #3
Ok, den frøste idé er god! Jeg har ikke mysql 4.1, så det bliver den jeg bruger. Takker.

Opret et svar, så kommer pointene.
Avatar billede arne_v Ekspert
28. september 2004 - 16:59 #4
svar
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
Computerworld tilbyder specialiserede kurser i database-management

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