डेटाबेस में कई कारणों से हमें अक्सर ऑरैकल टेबल से डुप्लिकेट पंक्तियों को खोजने और हटाने की आवश्यकता होती है। डेटा समस्याओं को दूर करने के लिए हमें अक्सर डिलीट करने की आवश्यकता होती है। डुप्लिकेट पंक्तियों को हटाने के लिए ओरेकल के कई तरीके हैं, लेकिन मूल रखें। मैं इस पोस्ट में इसे प्राप्त करने के लिए कुछ तेज़ तरीके दिखा रहा हूँ। मैं वह विधि दिखाऊंगा जहां पंक्ति का उपयोग किया जाता है और वह विधि जहां पंक्ति का उपयोग नहीं किया जाता है। कृपया ध्यान दें कि आपको उन सभी कॉलमों की पहचान करनी होगी जो तालिका में पंक्ति को डुप्लिकेट बनाते हैं और उन सभी कॉलमों को SQL में उपयुक्त डिलीट स्टेटमेंट में निर्दिष्ट करते हैं
Oracle से डुप्लिकेट पंक्तियों को कैसे हटाएं
डुप्लिकेट पंक्तियों को आसान तरीके से हटाने के कुछ तरीके यहां दिए गए हैं
(ए) फास्ट विधि लेकिन आपको सभी ऑरैकल इंडेक्स, ट्रिगर्स को फिर से बनाने की जरूरत है
create table my_table1 as select distinct * from my_table; drop my_table; rename my_table1 to my_table;
उदाहरण
SQL> select * from mytest;ID NAME
------1 TST
2 TST
1 TST
SQL> create table mytest1 as select distinct * from mytest; Table created. SQL> select * from mytest1;ID NAME
-------2 TST
1 TST
SQL> drop table mytest; Table dropped. SQL> rename mytest1 to mytest; Table renamed. SQL> select * from mytest;ID NAME
-------2 TST
1 TST
(बी) पंक्तिबद्ध का उपयोग करके ओरेकल में डुप्लिकेट रिकॉर्ड कैसे ढूंढें और हटाएं। नीचे दिया गया उदाहरण एक कॉलम दिखाता है। यदि आपके पास दो कॉलम के आधार पर डिलीट है, तो आप दो कॉलम निर्दिष्ट कर सकते हैं
Delete from my_table where rowid not in ( select max(rowid) from my_table group by my_col_name );
(सी) डुप्लिकेट पंक्तियों को हटाने के लिए ऑरैकल सेल्फ-जॉइन का उपयोग करें
DELETE FROM my_table A WHERE ROWID > (SELECT min(rowid) FROM my_table B WHERE A.key_values = B.key_values);
(डी) मौजूद क्लॉज का प्रयोग करें
delete from my_table t1 where exists (select 'x' from my_table t2 where t2.key_value1 = t1.key_value1 and t2.key_value2 = t1.key_value2 and t2.rowid > t1.rowid);
(ई) ओरेकल विश्लेषणात्मक कार्यों का उपयोग करने में डुप्लिकेट रिकॉर्ड हटाएं
delete from my_table where rowid in (select rid from ( select rowid rid, row_number() over (partition by column_name order by rowid) rn from my_table) where rn <> 1 )
जैसा कि दिखाया गया है, तालिकाओं में डुप्लिकेट पंक्तियों को हटाने के कई तरीके हैं। ये आदेश कई परिस्थितियों में काम कर सकते हैं और आवश्यकता के आधार पर उपयोग किए जा सकते हैं। कृपया हमेशा सुनिश्चित करें कि हमारे पास कोई भी कथन निष्पादित करने से पहले बैकअप उपलब्ध है। हमें पहले क्वेरी का उपयोग करके डुप्लीकेट ढूंढना चाहिए और फिर इसे करने से पहले इसे सत्यापित करना चाहिए
पंक्तिबद्ध का उपयोग करके oracle में डुप्लिकेट रिकॉर्ड कैसे खोजें
select * from my_table
where rowid not in
(select max(rowid) from my_table group by column_name);
तो पहले उपरोक्त क्वेरी का उपयोग करके डुप्लीकेट ढूंढें, फिर इसे हटाएं और हटाने की संख्या ऊपर क्वेरी की पंक्ति गणना के समान होनी चाहिए। अब डुप्लीकेट खोजें फिर से चलाएं। यदि कोई डुप्लिकेट नहीं है तो हम प्रतिबद्ध के लिए अच्छे हैं
एसक्यूएल में गहरी गोता लगाने के लिए कृपया नीचे दिए गए लेख को देखें
Oracle Sql tutorials :इसमें सभी उपयोगी Oracle sql लेखों की सूची शामिल है। Oracle Sql के बारे में जानने के लिए उनका अन्वेषण करें, भले ही आप Oracle Sql जानते हों
Oracle साक्षात्कार प्रश्न:शीर्ष 49 Oracle साक्षात्कार प्रश्नों और उत्तरों के लिए इस पृष्ठ को देखें:साक्षात्कार में आपकी सहायता के लिए मूल बातें, Oracle SQL। अतिरिक्त सामग्री भी प्रदान की जाती है
जहां oracle में खंड:डेटा सेट को प्रतिबंधित करना, जहां खंड, sql कथन में खंड क्या है, तुलना ऑपरेटर का
Oracle में एकल पंक्ति कार्य:sql, Oracle डेटा में एकल पंक्ति कार्यों को खोजने के लिए इसे देखें फंक्शन, एसक्यूएल में न्यूमेरिक फंक्शंस, एसक्यूएल में कैरेक्टर फंक्शन
ओरेकल एसक्यूएल क्वेरीज
blog.oracle.com