आप इस क्वेरी का उपयोग सभी डुप्लिकेट प्रविष्टियों को हटाने के लिए कर सकते हैं, जल्द से जल्द एक को छोड़कर:
DELETE d
FROM discog d
JOIN discog d1 ON d1.artist = d.artist AND d1.track = d.track AND d1.year < d.year;
अपडेट करें
एक वैकल्पिक समाधान जो वास्तव में बड़ी तालिकाओं के लिए अधिक कुशल होना चाहिए, डुप्लिकेट प्रविष्टि को रोकने के लिए पंक्तियों पर UNIQUE अनुक्रमणिका का उपयोग करके एक प्रतिलिपि बनाना है:
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;
अद्वितीय कुंजी संयोजन . पर है कलाकार का नाम और ट्रैक का नाम और इसलिए यह कलाकारों को अलग-अलग ट्रैक और अलग-अलग कलाकारों को एक ही ट्रैक नाम रखने की अनुमति देगा। क्योंकि SELECT
क्वेरी के भाग में ORDER BY
है वर्ष, यह पहले सबसे कम वर्ष के साथ (कलाकार, ट्रैक, वर्ष) संयोजन सम्मिलित करेगा और फिर अन्य समान (कलाकार, ट्रैक) रिकॉर्ड डुप्लिकेट कुंजी के कारण सम्मिलित नहीं किए जाएंगे।