कभी-कभी आपको MySQL में डुप्लिकेट रिकॉर्ड हटाने या डुप्लिकेट पंक्तियों को हटाने की आवश्यकता हो सकती है। MySQL में डुप्लीकेट रिकॉर्ड को हटाने के मुख्य रूप से 3 तरीके हैं। यहां बताया गया है कि MySQL में डुप्लीकेट रिकॉर्ड कैसे हटाएं।
MySQL डुप्लीकेट रिकॉर्ड हटाएं
यहाँ MySQL में डुप्लिकेट रिकॉर्ड को हटाने के चरण दिए गए हैं। मान लें कि आपके पास निम्न तालिका है dup_orders(id, amount) डुप्लिकेट रिकॉर्ड के साथ।
mysql> create table dup_orders(id int, amount int); mysql> insert into dup_orders(id,amount) values(1, 100),(1,250),(2,350),(2,350); mysql> select * from dup_orders; +------+--------+ | id | amount | +------+--------+ | 1 | 100 | | 1 | 250 | | 2 | 350 | | 2 | 350 | +------+--------+
बोनस पढ़ें :MySQL में डुप्लीकेट रिकॉर्ड कैसे प्राप्त करें
MySQL में डुप्लिकेट पंक्तियों को कैसे हटाएं
आइए MySQL में डुप्लीकेट रिकॉर्ड को हटाने के 3 तरीकों में से प्रत्येक को देखें।
<एच2>1. मध्यवर्ती तालिका का उपयोग करके डुप्लिकेट रिकॉर्ड निकालें
इस विधि में 3 चरण शामिल हैं। सबसे पहले, dup_orders . से बिना डुप्लीकेट वाली पंक्तियों का चयन करें तालिका और उन्हें दूसरी तालिका में डालें। यहाँ इसके लिए वाक्य रचना है।
CREATE TABLE [copy_of_source] SELECT DISTINCT [columns] FROM [source_table];
dup_orders से दूसरी तालिका में अलग-अलग पंक्तियों का चयन करने के लिए हमारी क्वेरी यहां दी गई है।
mysql> CREATE TABLE dup_orders_copy SELECT DISTINCT id,amount FROM dup_orders; mysql> select * from dup_orders_copy; +------+--------+ | id | amount | +------+--------+ | 1 | 100 | | 1 | 250 | | 2 | 350 | +------+--------+
उपरोक्त क्वेरी उन पंक्तियों को हटा देती है जो डुप्लिकेट को पूरा करती हैं, यानी सभी कॉलम के लिए डुप्लिकेट मान।
यदि आप केवल एक या अधिक लेकिन सभी स्तंभों के लिए डुप्लिकेट मानों वाली पंक्तियों को हटाना चाहते हैं, तो आप उपरोक्त क्वेरी में ग्रुप बाय क्लॉज का उपयोग कर सकते हैं। उदाहरण के लिए, यदि आप अपनी तालिका में केवल डुप्लिकेट आईडी कॉलम मानों वाली पंक्तियाँ चाहते हैं, तो निम्न क्वेरी का उपयोग करें।
mysql> CREATE TABLE dup_orders_copy SELECT id,amount FROM dup_orders group by id; mysql> select * from dup_orders_copy; +------+--------+ | id | amount | +------+--------+ | 1 | 100 | | 2 | 350 | +------+--------+
इंटरमीडिएट टेबल बनाने के बाद, मूल टेबल को छोड़ दें।
mysql> drop table dup_orders;
अंत में, मध्यवर्ती तालिका का नाम बदलकर मूल तालिका कर दें।
mysql> alter table dup_orders_copy rename to dup_orders; mysql> select * from dup_orders; +------+--------+ | id | amount | +------+--------+ | 1 | 100 | | 2 | 350 | +------+--------+
बोनस पढ़ें :MySQL यूनीक कॉन्स्टेंट जोड़ें
2. INNER JOIN का उपयोग करके डुप्लिकेट पंक्तियों को निकालें
आप DELETE और INNER JOIN स्टेटमेंट के संयोजन का उपयोग करके डुप्लिकेट पंक्तियों को भी हटा सकते हैं। हालांकि, इस मामले में, आपकी तालिका में कम से कम एक अद्वितीय कॉलम (जैसे प्राथमिक कुंजी) होना चाहिए। मान लें कि आपके पास निम्न dup_orders हैं डुप्लिकेट वाली तालिका राशि मान लेकिन अद्वितीय id मान।
mysql> insert into dup_orders(id,amount) values(1, 100),(2,250),(3,350),(4,350); mysql> select * from dup_orders; +------+--------+ | id | amount | +------+--------+ | 1 | 100 | | 2 | 250 | | 3 | 350 | | 4 | 350 | +------+--------+
आप इनर जॉइन का उपयोग करके उपरोक्त तालिका में स्वयं शामिल हो सकते हैं और निम्न क्वेरी का उपयोग करके डुप्लिकेट पंक्तियों को हटा सकते हैं।
mysql> DELETE t1 FROM dup_orders t1 INNER JOIN dup_orders t2 WHERE t1.id < t2.id AND t1.amount = t2.amount; +------+--------+ | id | amount | +------+--------+ | 1 | 100 | | 2 | 250 | | 4 | 350 | +------+--------+
उपरोक्त क्वेरी प्रत्येक डुप्लिकेट पंक्ति के लिए पंक्ति की उच्चतम आईडी बनाए रखेगी। यदि आप निम्नतम आईडी वाली पंक्ति को बनाए रखना चाहते हैं, तो निम्न क्वेरी का उपयोग करें।
mysql> DELETE t1 FROM dup_orders t1 INNER JOIN dup_orders t2 WHERE t1.id >> t2.id AND t1.amount = t2.amount;
बोनस पढ़ें :MySQL कॉलम का नाम बदलें
3. ROW_NUMBER()
. का उपयोग करके डुप्लीकेट रिकॉर्ड निकालेंआप 8.0.2 से उपलब्ध ROW_NUMBER() फ़ंक्शन का उपयोग करके तालिका से डुप्लिकेट रिकॉर्ड भी हटा सकते हैं। डुप्लिकेट पंक्तियों की पंक्ति संख्या प्राप्त करने के लिए यहां SQL क्वेरी है
SELECT *. ROW_NUMBER () Over (PARTITION BY [column] ORDER BY [column]) as [row_number_name];
यहाँ dup_orders तालिका के लिए पंक्ति संख्या प्राप्त करने की क्वेरी है
SELECT *. ROW_NUMBER () Over (PARTITION BY id ORDER BY id) as row_number from dup_orders;
डुप्लिकेट पंक्तियों को हटाने के लिए हम इसे अपनी SQL क्वेरी में उप क्वेरी के रूप में उपयोग करेंगे, जैसा कि नीचे दिखाया गया है
DELETE FROM dup_orders WHERE id IN ( SELECT id FROM ( SELECT id, ROW_NUMBER () Over (PARTITION BY id ORDER BY id) as row_number from dup_orders ) t WHERE row_number > 1 )
उम्मीद है, अब आप आसानी से MySQL में डुप्लीकेट रिकॉर्ड हटा सकते हैं।
Ubiq मिनटों में डेटा को विज़ुअलाइज़ करना और रीयल-टाइम डैशबोर्ड में मॉनिटर करना आसान बनाता है। इसे आज ही आजमाएं!