Du kan bruge denne forespørgsel til at slette alle duplikerede poster og efterlade den tidligste:
DELETE d
FROM discog d
JOIN discog d1 ON d1.artist = d.artist AND d1.track = d.track AND d1.year < d.year;
Opdater
En alternativ løsning, som burde være mere effektiv for virkelig store tabeller, er at oprette en kopi ved at bruge et UNIKT indeks på rækkerne for at forhindre duplikatindsættelse:
CREATE TABLE discog_copy (id INT, artist VARCHAR(50), track VARCHAR(50), year INT);
ALTER TABLE discog_copy ADD UNIQUE KEY (artist, track);
INSERT IGNORE INTO discog_copy SELECT * FROM discog ORDER BY year;
Den unikke nøgle er på kombinationen af kunstnernavn og spornavn, og så vil det give kunstnere mulighed for at have forskellige numre og forskellige kunstnere at have det samme spornavn. Fordi SELECT
en del af forespørgslen har ORDER BY
år, vil den indsætte kombinationen (kunstner,nummer,år) med det laveste år først, og derefter vil andre identiske (kunstner, spor) poster ikke blive indsat på grund af duplikatnøglen.