কিভাবে মাইএসকিউএল ডুপ্লিকেট সারি মুছে দেয়

How Mysql Delete Duplicate Rows



মাইএসকিউএল একটি রিলেশনাল ডেটাসেট যা সারি এবং কলামযুক্ত টেবিলে ডেটা সঞ্চয় করে। যাইহোক, ডেটাবেসে সংরক্ষিত ডেটাতে অ্যাপ্লিকেশন বা ব্যবহারকারীদের ত্রুটির কারণে ডুপ্লিকেট মান থাকতে পারে।

এই টিউটোরিয়ালে, আমরা শিখব কিভাবে একটি মাইএসকিউএল ডাটাবেসে ডুপ্লিকেট সারি অপসারণ করা যায় ডাটাবেসের আকার কমাতে এবং সার্ভারের কর্মক্ষমতা বাড়াতে সাহায্য করতে।







আমরা চালিয়ে যাওয়ার আগে, আমরা ধরে নিচ্ছি:



  1. আপনি মাইএসকিউএল ইনস্টল করেছেন এবং আপনার সিস্টেমে চলছে
  2. আপনার ডাটাবেসে রুট অ্যাক্সেস আছে।
  3. পরীক্ষা বা পরীক্ষার জন্য আপনার একটি ডাটাবেসে অ্যাক্সেস আছে

বিঃদ্রঃ : এই নির্দেশিকায় প্রদত্ত ধারণাগুলি পরীক্ষা করার জন্য যদি আপনার একটি নমুনা ডাটাবেসের প্রয়োজন হয়, দয়া করে সাকিলা ডাটাবেস বিবেচনা করুন বা এই গাইডে ব্যবহৃত ডাটাবেসের একটি অনুলিপি ডাউনলোড করুন।



সম্পদ নিচে দেওয়া হল:





মৌলিক ব্যবহার

আমরা শুরু করার আগে, আমরা ইচ্ছাকৃতভাবে পরীক্ষার উদ্দেশ্যে ডুপ্লিকেট মান সম্বলিত একটি টেবিল তৈরি করব। এই ক্রিয়াটি সম্পাদনের জন্য এসকিউএল প্রশ্নগুলি নীচে রয়েছে:

ব্যবহার করুন পৃথিবী;
ড্রপ টেবিল যদি বিদ্যমান ব্যবহারকারীরা;
সৃষ্টি টেবিল ব্যবহারকারীরা(আইডি INT প্রাথমিক কী না খালি স্বয়ং বৃদ্ধি ,ব্যবহারকারীর নাম ভার্চার (10) না খালি ,পুরো নাম ভার্চার (বিশ),ইমেইল ভার্চার (255) না খালি );
সন্নিবেশ করান INTO ব্যবহারকারীরা(ব্যবহারকারীর নাম,পুরো নাম,ইমেইল) মান
('কন্যা', 'ক্লড এম। মরি', '[ইমেল সুরক্ষিত]'),
('প্রেস', 'টিফানি জি বেইলি', '[ইমেল সুরক্ষিত]'),
('রকেট', 'ক্রিস্টোফার এস পেটন', '[ইমেল সুরক্ষিত]'),
('অন্ধকার ব্যাপার', 'প্যাট্রিসিয়া জে। ফক্স', '[ইমেল সুরক্ষিত]'),
('বিষয়', 'ফয়ে এইচ হার্টলি', '[ইমেল সুরক্ষিত]'),
('অন্ধকার ব্যাপার', 'প্যাট্রিসিয়া জে। ফক্স', '[ইমেল সুরক্ষিত]'),
('রকেট', 'ক্রিস্টোফার এস পেটন', '[ইমেল সুরক্ষিত]'),
('আর্টেমিস', 'ওয়েসলি সি ডিলার্ড', '[ইমেল সুরক্ষিত]');

আপনার প্রয়োজন অনুসারে উপরের প্রশ্নটি সংশোধন করতে বিনা দ্বিধায়। আপনার ভুলগুলি এড়ানোর জন্য আপনার ডেটাবেস (বিশ্ব) তৈরি করা আছে তা নিশ্চিত করা উচিত।



এখন, যদি আমরা টেবিলের ভিতরে এবং ব্যবহারকারীর নাম অনুসারে সমস্ত ডেটা পাই, তাহলে আমরা আমাদের দেখানো সদৃশগুলি দেখতে পাব:

মাইএসকিউএল> ব্যবহার পৃথিবী;
তথ্যশালা পরিবর্তিত
মাইএসকিউএল> নির্বাচন করুন * থেকে ব্যবহারকারীরা আদেশ দ্বারা ব্যবহারকারীর নাম;
+ ---- + ------------ + ----------------------- + ------- ---------------- +
|আইডি|ব্যবহারকারীর নাম|পুরো নাম|ইমেইল|
+ ---- + ------------ + ----------------------- + ------- ---------------- +
| 8 |আর্টেমিস|ওয়েসলি সি ডিলার্ড|[ইমেল সুরক্ষিত]|
| 4 |অন্ধকার ব্যাপার|প্যাট্রিসিয়া জে। ফক্স|[ইমেল সুরক্ষিত]|
| 6 |অন্ধকার ব্যাপার|প্যাট্রিসিয়া জে। ফক্স|[ইমেল সুরক্ষিত]|
| 2 |প্রেস|টিফানি জি বেইলি|[ইমেল সুরক্ষিত]|
| 5 |বিষয়|Faye H. Hartley|[ইমেল সুরক্ষিত]|
| 3 |রকেট|ক্রিস্টোফার এস পেটন|[ইমেল সুরক্ষিত]|
| 7 |রকেট|ক্রিস্টোফার এস পেটন|[ইমেল সুরক্ষিত]|
| |কন্যারাশি|ক্লাউড এম। মরি|[ইমেল সুরক্ষিত]|
+ ---- + ------------ + ----------------------- + ------- ---------------- +

আপনি উপরের টেবিল থেকে দেখতে পাচ্ছেন, আমাদের দুটি ডুপ্লিকেট মান রয়েছে যা ডাটাবেসকে বিনা কারণে বড় করে তোলে এবং ধীর গতির কারণ হয়।

আসুন এখন আমরা শিখি কিভাবে আমরা এই মানগুলি দূর করতে পারি।

#1 - যোগদান মুছুন

ডাটাবেসে ডুপ্লিকেট সারি অপসারণের একটি উপায় হল MySQL DELETE JOIN স্টেটমেন্ট ব্যবহার করা। ক্যোয়ারী, তবে, ডুপ্লিকেট মানগুলি অপসারণ করতে আইডি ব্যবহার করে।

উদাহরণস্বরূপ, উপরের ব্যবহারকারীদের টেবিলে ডুপ্লিকেট মানগুলি অপসারণ করতে, আমরা ইনপুট করতে পারি:

মুছে ফেলা 1 নং টেবিল থেকে ব্যবহারকারীদের টেবিল 1 অভ্যন্তরীণ যোগদান ব্যবহারকারীদের টেবিল 2 কোথায় table1.id<table2.id এবং table1.email=table2.email;

একবার আপনি উপরের প্রশ্নটি চালানোর পরে, আপনি নীচের আউটপুটে দেখানো সদৃশ মানগুলি সরিয়ে ফেলবেন:

মাইএসকিউএল> মুছে ফেলা 1 নং টেবিল থেকে ব্যবহারকারীদের টেবিল 1 অভ্যন্তরীণ যোগদান ব্যবহারকারীদের টেবিল 2 কোথায় table1.id<table2.id এবং table1.email=table2.email;
প্রশ্ন ঠিক আছে, 2সারি প্রভাবিত(0.01সেকেন্ড)

মাইএসকিউএল> নির্বাচন করুন * থেকে ব্যবহারকারীরা আদেশ দ্বারা ব্যবহারকারীর নাম;
+ ---- + ------------ + ----------------------- + ------- ---------------- +
|আইডি|ব্যবহারকারীর নাম|পুরো নাম|ইমেইল|
+ ---- + ------------ + ----------------------- + ------- ---------------- +
| 8 |আর্টেমিস|ওয়েসলি সি ডিলার্ড|[ইমেল সুরক্ষিত]|
| 6 |অন্ধকার ব্যাপার|প্যাট্রিসিয়া জে। ফক্স|[ইমেল সুরক্ষিত]|
| 2 |প্রেস|টিফানি জি বেইলি|[ইমেল সুরক্ষিত]|
| 5 |বিষয়|Faye H. Hartley|[ইমেল সুরক্ষিত]|
| 7 |রকেট|ক্রিস্টোফার এস পেটন|[ইমেল সুরক্ষিত]|
| |কন্যারাশি|ক্লাউড এম। মরি|[ইমেল সুরক্ষিত]|
+ ---- + ------------ + ----------------------- + ------- ---------------- +

#2 - সারি_ সংখ্যা () ফাংশন

দ্বিতীয় পদ্ধতি যা আমরা প্রয়োগ করতে পারি তা হল MySQL row_number () ফাংশন ব্যবহার করা। এই ফাংশনটি মাইএসকিউএল সংস্করণ 8 এবং উচ্চতর সমর্থিত।

এটি প্রতিটি সারিতে একটি সিকোয়েন্সিয়াল ইনট ভ্যালু বরাদ্দ করে কাজ করে, ডুপ্লিকেট মান সম্বলিত সারিগুলি 1 এর চেয়ে বেশি মান পেয়ে থাকে।

এই ফাংশন সম্পর্কে আরও জানতে, নীচে প্রদত্ত সংস্থানটি ব্যবহার করুন:

https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html#function_row-number

নীচের প্রশ্নটি বিবেচনা করুন যা সদৃশ মান সহ সারির আইডি প্রদান করে:

নির্বাচন করুন আইডি থেকে ( নির্বাচন করুন আইডি,ROW_NUMBER()ওভার( অংশ ব্যবহারকারীর নাম দ্বারা আদেশ দ্বারা ব্যবহারকারীর নাম) এএস সারি_ভার থেকে ব্যবহারকারীরা)t1 কোথায় সারি_ভার> ;

একবার আপনি উপরের ক্যোয়ারীটি চালানোর পরে, আপনার নীচের আউটপুটে দেখানো আইডিগুলির তালিকা পাওয়া উচিত:

+ ---- +
|আইডি|
+ ---- +
| 6 |
| 7 |
+ ---- +
2সারি ভিতরে সেট (0.01সেকেন্ড)

যদি আপনি মানগুলি অপসারণ করতে চান, তাহলে নিচের চিত্রের মত SELECT স্টেটমেন্টটি DELETE স্টেটমেন্ট দিয়ে প্রতিস্থাপন করুন:

মুছে ফেলা থেকে ব্যবহারকারীরা কোথায় আইডি ভিতরে ( নির্বাচন করুন আইডি থেকে ( নির্বাচন করুন আইডি,ROW_NUMBER()ওভার( অংশ ব্যবহারকারীর নাম দ্বারা আদেশ দ্বারা ব্যবহারকারীর নাম) এএস সারি_ভার থেকে ব্যবহারকারীরা)t1 কোথায় সারি_ভার> );

অবশেষে, আপনি যাচাই করতে পারেন যে SELECT স্টেটমেন্ট ব্যবহার করে সদৃশ মানগুলি সরানো হয়েছে।

মাইএসকিউএল> নির্বাচন করুন * থেকে ব্যবহারকারীরা আদেশ দ্বারা ব্যবহারকারীর নাম;
+ ---- + ------------ + ----------------------- + ------- ---------------- +
|আইডি|ব্যবহারকারীর নাম|পুরো নাম|ইমেইল|
+ ---- + ------------ + ----------------------- + ------- ---------------- +
| 8 |আর্টেমিস|ওয়েসলি সি ডিলার্ড|[ইমেল সুরক্ষিত]|
| 4 |অন্ধকার ব্যাপার|প্যাট্রিসিয়া জে। ফক্স|[ইমেল সুরক্ষিত]|
| 2 |প্রেস|টিফানি জি বেইলি|[ইমেল সুরক্ষিত]|
| 5 |বিষয়|Faye H. Hartley|[ইমেল সুরক্ষিত]|
| 3 |রকেট|ক্রিস্টোফার এস পেটন|[ইমেল সুরক্ষিত]|
| |কন্যারাশি|ক্লাউড এম। মরি|[ইমেল সুরক্ষিত]|
+ ---- + ------------ + ----------------------- + ------- ---------------- +

উপসংহার

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