एक तालिका में पंक्तियों के बीच डेटा की प्रतिलिपि बनाना
डेटाबेस प्रबंधन में, अक्सर अन्य पंक्तियों के डेटा के आधार पर पंक्तियों को अपडेट करना आवश्यक होता है एक ही टेबल. कॉलम आईडी, NAME और VALUE वाली एक तालिका पर विचार करें जिसमें डुप्लिकेट NAME मान शामिल हैं, इस प्रकार:
ID | NAME | VALUE | ---------------------------- 1 | Test | VALUE1 | 2 | Test2 | VALUE2 | 1 | Test2 | | 4 | Test | | 1 | Test3 | VALUE3 |
मान लीजिए हम पंक्तियों में खाली VALUE फ़ील्ड को डुप्लिकेट NAME मानों के साथ अपडेट करना चाहते हैं। इसे प्राप्त करने के लिए, हम SQL क्वेरीज़ को नियोजित कर सकते हैं जो एक ही तालिका के भीतर मानों को संदर्भित और अद्यतन करती हैं।
एक दृष्टिकोण में शामिल होने के साथ अद्यतन कथन का उपयोग करना शामिल है। निम्नलिखित क्वेरी में, हम डेटा_टेबल को दो बार जोड़ते हैं, उन्हें dt1 और dt2 के रूप में उपनाम देते हैं:
UPDATE data_table dt1, data_table dt2 SET dt1.VALUE = dt2.VALUE WHERE dt1.NAME = dt2.NAME AND dt1.VALUE = '' AND dt2.VALUE != ''
यह क्वेरी खाली VALUE फ़ील्ड (जहां dt1.VALUE खाली है) को गैर-रिक्त के साथ पहचानती है और अपडेट करती है समान नाम वाली अन्य पंक्तियों से मान (जहाँ dt2.VALUE खाली नहीं है)।
एक विकल्प के रूप में, हम गैर-रिक्त मानों वाली पंक्तियों की पहचान करने के लिए एक सबक्वेरी का उपयोग कर सकते हैं और इसे अद्यतन करने के लिए मूल तालिका में वापस जोड़ सकते हैं:
UPDATE data_table t, (SELECT DISTINCT ID, NAME, VALUE FROM data_table WHERE VALUE IS NOT NULL AND VALUE != '') t1 SET t.VALUE = t1.VALUE WHERE t.ID = t1.ID AND t.NAME = t1.NAME
इन दोनों प्रश्नों के परिणामस्वरूप वांछित आउटपुट मिलेगा:
ID | NAME | VALUE | ---------------------------- 1 | Test | VALUE1 | 2 | Test2 | VALUE2 | 1 | Test2 | VALUE2 | 4 | Test | VALUE1 | 1 | Test3 | VALUE3 |
ये दृष्टिकोण एक तालिका के भीतर डेटा में हेरफेर करने में लचीलापन प्रदान करते हैं, जिससे आप मानदंडों के आधार पर मूल्यों को अपडेट कर सकते हैं जिसमें एक ही तालिका में अन्य पंक्तियां शामिल होती हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3