আমি "ALTER IGNORE" ব্যবহার করে একটি অকল্য সূচক যুক্ত করা সহায়ক বলে মনে করেছি যা সদৃশগুলি সরিয়ে দেয় এবং অনন্য রেকর্ডগুলি প্রয়োগ করে যা আপনার মনে হয় যা মনে হয়। সুতরাং বাক্য গঠনটি হ'ল:
ALTER IGNORE TABLE `table` ADD UNIQUE INDEX(`id`, `another_id`, `one_more_id`);
এটি কার্যকরভাবে অনন্য বাধা যুক্ত করে যার অর্থ আপনার কাছে সদৃশ রেকর্ড কখনও থাকবে না এবং আইজিএনওর বিদ্যমান নকলগুলি মুছে ফেলবে।
আপনি আরো পড়তে পারেন সম্পর্কে অঁ্যা ALTER এখানে উপেক্ষা করে: http://mediakey.dk/~cc/mysql-remove-duplicate-entries/
আপডেট: আমাকে @ ইনফিজিটিভ দ্বারা জানানো হয়েছিল যে এটি মাইএসকিউএল> 5.5 এর সংস্করণগুলিতে ব্যর্থ হতে পারে:
এটি মাইএসকিউএল> 5.5 এবং ইনোডিবি টেবিল এবং পারকোনায় তাদের ইনোডিবি দ্রুত সূচক তৈরির বৈশিষ্ট্য [ http://bugs.mysql.com/bug.php?id=40344] এর কারণে ব্যর্থ হয় । এই ক্ষেত্রে প্রথমে রান করুন set session old_alter_table=1
এবং তারপরে উপরের কমান্ডটি ঠিকঠাক কাজ করবে
আপডেট - ALTER IGNORE
5.7 -এ সরানো হয়েছে
ডক্স থেকে
মাইএসকিউএল 5.6.17 হিসাবে, আইজিএনওর ধারাটি অবচয় করা হয়েছে এবং এর ব্যবহার একটি সতর্কতা উত্পন্ন করে। আইজিএনরে মাইএসকিউএল 5.7-এ সরানো হয়েছে।
মাইএসকিউএল দেবের একটিতে দুটি বিকল্প দেওয়া হয় :
- অনন্য ক্ষেত্রগুলি দ্বারা গ্রুপ করুন এবং উপরের মত দেখাতে মুছুন
- একটি নতুন টেবিল তৈরি করুন, একটি অনন্য সূচক যুক্ত করুন, ব্যবহার করুন
INSERT IGNORE
, প্রাক্তন:
CREATE TABLE duplicate_row_table LIKE regular_row_table;
ALTER TABLE duplicate_row_table ADD UNIQUE INDEX (id, another_id);
INSERT IGNORE INTO duplicate_row_table SELECT * FROM regular_row_table;
DROP TABLE regular_row_table;
RENAME TABLE duplicate_row_table TO regular_row_table;
তবে আপনার টেবিলের আকারের উপর নির্ভর করে এটি ব্যবহারিক হতে পারে না