U kunt deze zoekopdracht gebruiken om alle dubbele vermeldingen te verwijderen, zodat de vroegste behouden blijft:
DELETE d
FROM discog d
JOIN discog d1 ON d1.artist = d.artist AND d1.track = d.track AND d1.year < d.year;
Bijwerken
Een alternatieve oplossing die efficiënter zou moeten zijn voor echt grote tabellen, is om een kopie te maken, met behulp van een UNIEKE index op de rijen om dubbele invoeging te voorkomen:
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;
De unieke sleutel zit in de combinatie van artiestennaam en tracknaam, zodat artiesten verschillende tracks kunnen hebben en verschillende artiesten dezelfde tracknaam. Omdat de SELECT
een deel van de zoekopdracht heeft ORDER BY
jaar, wordt de (artiest, track, jaar) combinatie met het laagste jaar eerst ingevoegd en daarna worden andere identieke (artiest, track) records niet ingevoegd vanwege de dubbele sleutel.