MySQL कैसे डुप्लिकेट पंक्तियों को हटाता है

How Mysql Delete Duplicate Rows



MySQL एक रिलेशनल डेटासेट है जो पंक्तियों और स्तंभों वाली तालिकाओं में डेटा संग्रहीत करता है। हालाँकि, डेटाबेस में संग्रहीत डेटा में अनुप्रयोगों या उपयोगकर्ताओं में त्रुटियों के कारण डुप्लिकेट मान हो सकते हैं।

इस ट्यूटोरियल में, हम सीखेंगे कि डेटाबेस आकार को कम करने और सर्वर के प्रदर्शन को बढ़ाने में मदद करने के लिए एक MySQL डेटाबेस में डुप्लिकेट पंक्तियों को कैसे हटाया जाए।







जारी रखने से पहले, हम मान रहे हैं:



  1. आपके पास MySQL स्थापित है और आपके सिस्टम पर चल रहा है
  2. आपके पास डेटाबेस तक रूट पहुंच है।
  3. आपके पास प्रयोग या परीक्षण के लिए डेटाबेस तक पहुंच है

ध्यान दें : यदि आपको इस गाइड में प्रदान की गई अवधारणाओं को आज़माने के लिए एक नमूना डेटाबेस की आवश्यकता है, तो कृपया सकीला डेटाबेस पर विचार करें या इस गाइड में उपयोग किए गए डेटाबेस की एक प्रति डाउनलोड करें।



संसाधन नीचे दिए गए हैं:





मूल उपयोग

शुरू करने से पहले, हम जानबूझकर परीक्षण उद्देश्यों के लिए डुप्लिकेट मानों वाली एक तालिका बनाएंगे। इस क्रिया को करने के लिए SQL क्वेरी नीचे दी गई हैं:

उपयोग दुनिया;
बूंद टेबल अगर मौजूद उपयोगकर्ताओं;
सर्जन करना टेबल उपयोगकर्ताओं(पहचान NS प्राथमिक कुंजी नहीं शून्य स्वत: वेतनवृद्धि ,उपयोगकर्ता नाम वचर (10) नहीं शून्य ,पूरा नाम वचर (बीस),ईमेल वचर (255) नहीं शून्य );
सम्मिलित करें में उपयोगकर्ताओं(उपयोगकर्ता नाम,पूरा नाम,ईमेल) मान
('कन्या', 'क्लाउड एम. मोरी', ' [ईमेल संरक्षित]'),
('दबाएँ', 'टिफ़नी जी. बेली', ' [ईमेल संरक्षित]'),
('रॉकेट', 'क्रिस्टोफर एस. पेटन', ' [ईमेल संरक्षित]'),
('गहरे द्रव्य', 'पेट्रीसिया जे फॉक्स', ' [ईमेल संरक्षित]'),
('विषय', 'फेय एच. हार्टले', ' [ईमेल संरक्षित]'),
('गहरे द्रव्य', 'पेट्रीसिया जे फॉक्स', ' [ईमेल संरक्षित]'),
('रॉकेट', 'क्रिस्टोफर एस. पेटन', ' [ईमेल संरक्षित]'),
('आर्टेमिस', 'वेस्ले सी. डिलार्ड', ' [ईमेल संरक्षित]');

अपनी आवश्यकताओं को पूरा करने के लिए उपरोक्त क्वेरी को बेझिझक संशोधित करें। आपको यह भी सुनिश्चित करना चाहिए कि त्रुटियों से बचने के लिए आपके पास डेटाबेस (दुनिया) बनाया गया है।



अब, यदि हम तालिका के अंदर और उपयोगकर्ता नाम के क्रम में सभी डेटा प्राप्त करते हैं, तो हम दिखाए गए अनुसार डुप्लिकेट देखेंगे:

माई एसक्यूएल> उपयोग दुनिया;
डेटाबेस बदला हुआ
माई एसक्यूएल> चुनते हैं * से उपयोगकर्ताओं द्वारा आदेश उपयोगकर्ता नाम;
+ ---- + ------------- + ------------------------ + -------- ---------------- +
|पहचान|उपयोगकर्ता नाम|पूरा नाम|ईमेल|
+ ---- + ------------- + ------------------------ + -------- ---------------- +
| 8 |अरतिमिस|वेस्ली सी. डिलार्ड|[ईमेल संरक्षित]|
| 4 |गहरे द्रव्य|पेट्रीसिया जे फॉक्स|[ईमेल संरक्षित]|
| 6 |गहरे द्रव्य|पेट्रीसिया जे फॉक्स|[ईमेल संरक्षित]|
| 2 |दबाएँ|टिफ़नी जी. बेली|[ईमेल संरक्षित]|
| 5 |विषय|फेय एच. हार्टले|[ईमेल संरक्षित]|
| 3 |राकेट|क्रिस्टोफर एस पेटन|[ईमेल संरक्षित]|
| 7 |राकेट|क्रिस्टोफर एस पेटन|[ईमेल संरक्षित]|
| 1 |कन्या|क्लाउड एम. मोरीक|[ईमेल संरक्षित]|
+ ---- + ------------- + ------------------------ + -------- ---------------- +

जैसा कि आप ऊपर दी गई तालिका से देख सकते हैं, हमारे पास दो डुप्लिकेट मान हैं जो डेटाबेस को बिना किसी कारण के बड़ा बनाते हैं और धीमी गति का कारण बनते हैं।

आइए अब जानें कि हम इन मूल्यों को कैसे दूर कर सकते हैं।

# 1 - DELETE जॉइन

डेटाबेस में डुप्लिकेट पंक्तियों को हटाने का एक तरीका MySQL DELETE JOIN स्टेटमेंट का उपयोग करना है। हालांकि, क्वेरी डुप्लिकेट मानों को हटाने के लिए आईडी का उपयोग करती है।

उदाहरण के लिए, उपरोक्त उपयोगकर्ता तालिका में डुप्लिकेट मानों को हटाने के लिए, हम इनपुट कर सकते हैं:

हटाएँ तालिका एक से उपयोगकर्ता तालिका1 भीतरी में शामिल होने के उपयोगकर्ता तालिका2 कहां तालिका1.आईडी<तालिका2.आईडी तथा तालिका1.ईमेल=तालिका 2. ईमेल;

एक बार जब आप उपरोक्त क्वेरी को निष्पादित कर लेते हैं, तो आप नीचे दिए गए आउटपुट में दिखाए गए डुप्लिकेट मानों को हटा देंगे:

माई एसक्यूएल> हटाएँ तालिका एक से उपयोगकर्ता तालिका1 भीतरी में शामिल होने के उपयोगकर्ता तालिका2 कहां तालिका1.आईडी<तालिका2.आईडी तथा तालिका1.ईमेल=तालिका 2. ईमेल;
क्वेरी ठीक, 2पंक्तियाँ प्रभावित(0.01सेकंड)

माई एसक्यूएल> चुनते हैं * से उपयोगकर्ताओं द्वारा आदेश उपयोगकर्ता नाम;
+ ---- + ------------- + ------------------------ + -------- ---------------- +
|पहचान|उपयोगकर्ता नाम|पूरा नाम|ईमेल|
+ ---- + ------------- + ------------------------ + -------- ---------------- +
| 8 |अरतिमिस|वेस्ली सी. डिलार्ड|[ईमेल संरक्षित]|
| 6 |गहरे द्रव्य|पेट्रीसिया जे फॉक्स|[ईमेल संरक्षित]|
| 2 |दबाएँ|टिफ़नी जी. बेली|[ईमेल संरक्षित]|
| 5 |विषय|फेय एच. हार्टले|[ईमेल संरक्षित]|
| 7 |राकेट|क्रिस्टोफर एस पेटन|[ईमेल संरक्षित]|
| 1 |कन्या|क्लाउड एम. मोरीक|[ईमेल संरक्षित]|
+ ---- + ------------- + ------------------------ + -------- ---------------- +

#2 - Row_Number () फ़ंक्शन

दूसरी विधि जिसे हम लागू कर सकते हैं वह है MySQL row_number() फ़ंक्शन का उपयोग करना। यह फ़ंक्शन MySQL संस्करण 8 और उच्चतर में समर्थित है।

यह प्रत्येक पंक्ति में अनुक्रमिक int मान निर्दिष्ट करके काम करता है, जिसमें पंक्तियों में डुप्लिकेट मान होते हैं जो 1 से अधिक मान प्राप्त करते हैं।

इस फ़ंक्शन के बारे में अधिक जानने के लिए, नीचे दिए गए संसाधन का उपयोग करें:

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

नीचे दी गई क्वेरी पर विचार करें जो डुप्लिकेट मानों वाली पंक्तियों की आईडी लौटाती है:

चुनते हैं पहचान से ( चुनते हैं पहचान,पंक्ति नंबर()ऊपर( PARTITION उपयोगकर्ता नाम द्वारा द्वारा आदेश उपयोगकर्ता नाम) जैसा पंक्ति_वार से उपयोगकर्ताओं)t1 कहां पंक्ति_वार> 1;

एक बार जब आप उपरोक्त क्वेरी को निष्पादित कर लेते हैं, तो आपको नीचे दिए गए आउटपुट में दिखाए गए अनुसार आईडी की सूची मिलनी चाहिए:

+ ---- +
|पहचान|
+ ---- +
| 6 |
| 7 |
+ ---- +
2पंक्तियों में सेट (0.01सेकंड)

यदि आप मानों को हटाना चाहते हैं, तो बस SELECT स्टेटमेंट को DELETE स्टेटमेंट से बदलें जैसा कि नीचे दिखाया गया है:

हटाएँ से उपयोगकर्ताओं कहां पहचान में ( चुनते हैं पहचान से ( चुनते हैं पहचान,पंक्ति नंबर()ऊपर( PARTITION उपयोगकर्ता नाम द्वारा द्वारा आदेश उपयोगकर्ता नाम) जैसा पंक्ति_वार से उपयोगकर्ताओं)t1 कहां पंक्ति_वार> 1);

अंत में, आप यह सत्यापित कर सकते हैं कि SELECT स्टेटमेंट का उपयोग करके डुप्लिकेट मान हटा दिए गए हैं।

माई एसक्यूएल> चुनते हैं * से उपयोगकर्ताओं द्वारा आदेश उपयोगकर्ता नाम;
+ ---- + ------------- + ------------------------ + -------- ---------------- +
|पहचान|उपयोगकर्ता नाम|पूरा नाम|ईमेल|
+ ---- + ------------- + ------------------------ + -------- ---------------- +
| 8 |अरतिमिस|वेस्ली सी. डिलार्ड|[ईमेल संरक्षित]|
| 4 |गहरे द्रव्य|पेट्रीसिया जे फॉक्स|[ईमेल संरक्षित]|
| 2 |दबाएँ|टिफ़नी जी. बेली|[ईमेल संरक्षित]|
| 5 |विषय|फेय एच. हार्टले|[ईमेल संरक्षित]|
| 3 |राकेट|क्रिस्टोफर एस पेटन|[ईमेल संरक्षित]|
| 1 |कन्या|क्लाउड एम. मोरीक|[ईमेल संरक्षित]|
+ ---- + ------------- + ------------------------ + -------- ---------------- +

निष्कर्ष

इस ट्यूटोरियल में, हमने डेटाबेस से डुप्लिकेट मानों को हटाने के दो तरीकों पर चर्चा की। बड़े डेटाबेस, विशेष रूप से सामान्य उपयोग में, बाहरी आयात और अन्य त्रुटियों से कई डुप्लिकेट मान हो सकते हैं। इसलिए, यह सुनिश्चित करने के लिए कि एप्लिकेशन बेहतर प्रदर्शन करते हैं, डुप्लिकेट मानों को शुद्ध करते रहने की आवश्यकता है।