Avatar billede dennism Nybegynder
18. februar 2008 - 23:07 Der er 5 kommentarer og
1 løsning

mySQL: fjern dublet

Jeg har lige indsat en masse data i en tabel i min database.
Når jeg laver en alm
SELECT * FROM participants
får jeg ca. 28.000 rækker.

Laver jeg en:
SELECT * FROM participants GROUP BY email
får jeg kun 13.000

Det skyldes, at jeg har en del dubletter i min tabel.

Er der en smart og hurtig måde at slette dubletten så der kun eksisterer en række for hver email?

Håber mit spørgsmål er forståeligt - eller så sig endelig til!
Avatar billede pidgeot Nybegynder
18. februar 2008 - 23:11 #1
Problemet er jo lidt, hvilken af de poster der er skal slettes, og hvad med ekstra data der er knyttet til den post (om noget)?

En mulighed var jo noget a la "DELETE FROM participants WHERE id IN (SELECT MAX(id) FROM participants GROUP BY email HAVING COUNT(*)>1)" (kræver en nyere MySQL, og der tages forbehold for fejl - test den før du kører den!) for at slette den senste oprettede, men det er ikke nødvendigvis den man bør slette. (Du skal vist køre den et par gange for at få tømt helt ud, da den kun sletter en ad gangen)
Avatar billede dennism Nybegynder
18. februar 2008 - 23:13 #2
Mange tak!
Sad selv og nussede med den, og forsøgte noget i den stil - men du var sku noget hurtigere end mig ;)

Tak for hjælpen! Du må gerne smide et svar!
Avatar billede dennism Nybegynder
18. februar 2008 - 23:16 #3
Kan det godt passe, at det ikke virker i MySQL 4.1.22?
Avatar billede pidgeot Nybegynder
18. februar 2008 - 23:20 #4
Jeg tror nok du skal have MySQL 5.0, så ja - 4.1 kan godt subselects, men når de bliver for komplekse, brækker den halsen.

Som alternativ kan du lave et script der løber igennem SELECT * FROM participants ORDER BY email, finde dubletterne (poster hvor email==sidste posts email) og så slette dubletterne manuelt - jeg kan ikke lige komme på en måde at omskrive det til noget 4.1 kan bruge direkte.
Avatar billede dennism Nybegynder
18. februar 2008 - 23:37 #5
Jeg fik det klaret vha. phpmyadmin :) Du må gerne smide et svar!
Avatar billede pidgeot Nybegynder
18. februar 2008 - 23:47 #6
Værsgo :)
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