Hallo,

Ik heb een tabel met 1628 e-mailadressen, alleen zitten er veel dubbele tussen. Kan ik dat met phpMyAdmin of MySQL doen? Of zal dat met PHP moeten?
Want als ik gewoon die kolom uniek maak, krijg ik een error.

Mvg,
Jonathan
gewoon met een query
DELETE FROM table WHERE id NOT IN (SELECT MIN(id) FROM table GROUP BY email)

zoiets moet lukken
Zeg nou aub niet zoiets moet lukken. Je ligt hier met DELETE te werke jah!...
@ Mr D: ik vind het nog niet eens zo'n gekke query die je voorstelt.
@ Jonathan: wel ff je tabel backuppen eerst natuurlijk
En vervolgens nooit meer vergeten om een UNIQUE op kolommen met unieke gegevens te zetten! Krijg je ook niet meer van deze ellende in je database.
Doe eerst eens een SELECT.

SELECT email, COUNT(email) AS aantal FROM db
GROUP BY email
HAVING COUNT(email) > 1

Nou heb je alle dubbele
@Klaasjan: En welke records moet je dan weggooien? Je wilt tenslotte niet alles weggooien, je wilt unieke records overhouden.

Ik zou een nieuwe tabel aanmaken, daar de kolom email op UNIQUE zetten en de hele zooi kopieeren. Dubbele records worden keurig afgekeurd, de rest staat in de nieuwe tabel.

Probleem opgelost. En zorg er voor dat het nooit meer voorkomt, het is een blunder van de eerste orde.

<schaam>die we allemaal wel eens hebben gemaakt...</schaam>
@Frank
Ik dacht aan een exportje naar xls om daar te bepalen welke moeten blijven. Maar jouw idee is veel beter
Jonathan,

Je zou voor de zekerheid de query van Mr D een beetje kunnen aanpassen naar een update query.

Je maakt een extra veld in je database:
deleted ENUM("Y","N") NOT NULL DEFAULT "N";
daarna kijken of de resultaten zijn zoals je wilt en daarna de delete query uitvoeren.

Reageren