मुझे लगता है कि आप केवल IGNORE का उपयोग करके एक UNIQUE INDEX जोड़ने का प्रयास कर सकते हैं:
ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`column`);
MySQL को कुछ इस तरह से जवाब देना चाहिए:
Query OK, 4524 rows affected (1.09 sec)
Records: 4524 Duplicates: 9342 Warnings: 0
बेशक, आप यह तय करने के लिए MySQL पर छोड़ देंगे कि किन पंक्तियों को छोड़ना है।
संपादित करें:
यह जितने चाहें उतने कॉलम के लिए काम करता है:
ALTER IGNORE TABLE `table` ADD UNIQUE INDEX `name` (`col1`, `col2`, `col3`);
क्रिएट इंडेक्स
पर MySQL के दस्तावेज़ देखें। . एक सामान्य गोचा (कम से कम एक बार मैं भाग गया) यह भूल जाना है कि NULL = NULL
सत्य नहीं है (लेकिन NULL
), इसलिए {42, NULL} और {42, NULL} को दो कॉलम पर UNIQUE इंडेक्स के लिए अनुमति है।