यदि आपकी तालिका में डुप्लीकेट हैं और आप उपयोग करते हैं
ALTER TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D);
त्रुटि 1062 (डुप्लिकेट कुंजी) के साथ क्वेरी विफल हो जाएगी।
लेकिन अगर आप IGNORE
का इस्तेमाल करते हैं
-- (only works before MySQL 5.7.4)
ALTER IGNORE TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D);
डुप्लिकेट हटा दिए जाएंगे। लेकिन दस्तावेज़ीकरण यह निर्दिष्ट नहीं करता है कि कौन सी पंक्ति रखी जाएगी:
यदि आपका संस्करण 5.7.4 या अधिक है - तो आप यह कर सकते हैं:
- डेटा को एक अस्थायी तालिका में कॉपी करें (यह तकनीकी रूप से अस्थायी होने की आवश्यकता नहीं है)।
- मूल तालिका को छोटा करें।
- अद्वितीय सूचकांक बनाएं।
- और डेटा को वापस कॉपी करें
INSERT IGNORE
. के साथ (जो अभी भी उपलब्ध है)।
CREATE TABLE tmp_data SELECT * FROM mytable;
TRUNCATE TABLE mytable;
ALTER TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D);
INSERT IGNORE INTO mytable SELECT * from tmp_data;
DROP TABLE tmp_data;
यह भी देखें:INSERT ... सिंटेक्स चुनें और इग्नोर कीवर्ड की तुलना और सख्त SQL मोड