মাইএসকিউএল - একটি বিদ্যমান ক্ষেত্রটি অনন্য করুন


155

আমার এমন ক্ষেত্রটি নিয়ে ইতিমধ্যে বিদ্যমান একটি সারণী রয়েছে যা অনন্য হওয়া উচিত তবে তা নয়। আমি কেবল এটি জানি কারণ টেবিলে একটি এন্ট্রি করা হয়েছিল যা অন্যটির মতো একই মান ছিল, ইতিমধ্যে বিদ্যমান, এন্ট্রি এবং এর ফলে সমস্যা দেখা দিয়েছে।

আমি এই ক্ষেত্রটি কীভাবে কেবল অনন্য মূল্যবোধ গ্রহণ করব?

উত্তর:


293
ALTER IGNORE TABLE mytbl ADD UNIQUE (columnName);

মাইএসকিউএল 5.7.4 বা তার পরে:

ALTER TABLE mytbl ADD UNIQUE (columnName);

মাইএসকিউএল ৫.7.৪ অনুসারে, অল্টার টেবিলের আইগনোর ধারাটি সরিয়ে ফেলা হয়েছে এবং এর ব্যবহারের ফলে ত্রুটি দেখা দেয়।

সুতরাং, IGNORE কীওয়ার্ড আর সমর্থিত না হওয়ায় প্রথমে সদৃশ এন্ট্রিগুলি সরিয়ে ফেলার বিষয়টি নিশ্চিত করুন।

উল্লেখ


62
+1 If IGNORE is specified, only the first row is used of rows with duplicates on a unique key, The other conflicting rows are deleted. ডক্স
স্ক্রুম মিস্টার

1
নির্দিষ্ট মানদণ্ডের ভিত্তিতে সারিগুলি মুছতে বলার উপায় আছে কি? অথবা এটি ALTERসম্পন্ন করার আগে আপনাকে কিছু প্রাকপ্রসেসিং করতে হবে।
corsiKa

7
ALTER IGNOREআপনার ডেটা সুরক্ষার জন্য মাইএসকিউএল সংস্করণ> 5.5 এবং ইনোডিবিতে নকল ত্রুটি দিতে পারে give আপনি যদি নিশ্চিত হন যে সদৃশ সারিগুলির প্রথমটি ঠিক রাখা সঠিক জিনিস, চেষ্টা করুন set session old_alter_table=1। এটি পিছনে সেট করতে ভুলবেন না mysqlolyk.wordpress.com/2012/02/18/...
michaelliu

2
5.6.7 বা তার বেশি ব্যবহার করে যে কেউ এতে হোঁচট খাচ্ছে তার জন্য আইজিএনওর আর সমর্থিত নয়। আরও ডকস আমি এখন এটি করার উপায় অনুমান করি যে আপনার আগে নকল নেই, তা নিশ্চিত করা?
উইলিয়াম টি। ম্যালার্ড

1
আপনি এই কোয়েরিটি চালানোর আগে সারণীর একটি ব্যাকআপ কপি তৈরি করতে ভুলবেন না। এটি কলাম নামের একই মান থাকলে বা খালি থাকলে প্রথমটি ব্যতীত সমস্ত সারি মুছে ফেলবে।
অবিচলিত_আড্ডি


16

আপনি যদি এই সীমাবদ্ধতার নামও রাখতে চান তবে এটি ব্যবহার করুন:

ALTER TABLE myTable
  ADD CONSTRAINT constraintName 
    UNIQUE (columnName);

7

CREATE UNIQUE INDEX foo ON table_name (field_name)

সেই বর্গাকারটি কার্যকর করার আগে আপনাকে সেই কলামে সদৃশ মানগুলি মুছে ফেলতে হবে। Column কলামে বিদ্যমান যে কোনও সদৃশ মান আপনাকে mysql ত্রুটি 1062 এ নিয়ে যাবে


4

সবচেয়ে সহজ এবং দ্রুততম উপায় হবে phpmyadmin কাঠামো টেবিলের সাথে।

পিএইচপিএমইয়াডমিন অ্যাডমিন প্যানেল ব্যবহার করুন!

এটি রাশিয়ান ভাষায় তবে ইংরেজি সংস্করণে একই হওয়া উচিত। শুধু অনন্য বাটন ক্লিক করুন। এছাড়াও সেখান থেকে আপনি আপনার কলামগুলি প্রাথমিক বা মুছে ফেলতে পারেন।


2
ALTER IGNORE TABLE mytbl ADD UNIQUE (columnName);

সঠিক উত্তর

সন্নিবেশ অংশ

INSERT IGNORE INTO mytable ....

1

এই কোডটি বিদ্যমান টেবিলের জন্য অনন্য কী সেট করার জন্য আমাদের সমস্যাটি সমাধান করা

alter ignore table ioni_groups add unique (group_name);

তবে কলামের বাইরের সমস্ত ডুপ্লিকেটগুলি সরিয়ে দেয়
বায়াসি উইগা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.