2010-07-29 11 views
59

मैं डेटा को एक कॉलम से अन्य तालिका के दूसरे कॉलम में कॉपी करना चाहता हूं। मैं उसे कैसे कर सकता हूँ?डेटा को एक कॉलम से दूसरे कॉलम में कॉपी करें (जो एक अलग तालिका में है)

Update tblindiantime Set CountryName =(Select contacts.BusinessCountry From contacts) 

लेकिन यह काम नहीं किया:

मैं निम्नलिखित की कोशिश की।

मैं संपर्क तालिका के "बिजनेसकंट्री" कॉलम को tblindiantime तालिका के "CountryName" कॉलम में कॉपी करना चाहता हूं। इस प्रकार

+0

एक से दूसरे तालिका में कॉलम को कॉपी करने के लिए, आप तालिकाओं के बीच संबंध के कुछ प्रकार की जरूरत है। क्या दो टेबलों में एक आम आईडी है? – mdma

+0

आप किस डेटाबेस और संस्करण का उपयोग कर रहे हैं? –

उत्तर

60

एसक्यूएल सर्वर 2008 में आप एक बहु तालिका अद्यतन का उपयोग कर सकते हैं:

UPDATE tblindiantime 
SET tblindiantime.CountryName = contacts.BusinessCountry 
FROM tblindiantime 
JOIN contacts 
ON -- join condition here 

आप जो पंक्ति अद्यतन किया जाना चाहिए निर्दिष्ट करने के लिए एक शर्त में शामिल होने की जरूरत है।

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

INSERT INTO tblindiantime (CountryName) 
SELECT BusinessCountry FROM contacts 
+0

आपके प्रतिनिधि के लिए हाय धन्यवाद, लेकिन यह मुझे त्रुटि के बाद दिखा रहा है मूल्य 'एनएलएलएल' कॉलम 'इंडियनटाइम', तालिका 'tqms.dbo.tblindiantime' में नहीं डाल सकता है; कॉलम नल की अनुमति नहीं देता है। INSERT विफल रहता है। कथन समाप्त कर दिया गया है। –

+1

@ एमिटपेटिल - मुझे पता है कि यह पुराना है लेकिन आपके जैसे किसी की मदद कर सकता है। केवल संपर्कों के बजाय ISNULL (संपर्क। बिजनेस काउंटी, '') का उपयोग करें। व्यवसायदेश और इसे आपकी समस्या का समाधान करना चाहिए। हम मूल रूप से खाली स्ट्रिंग के साथ शून्य को बदल रहे हैं। –

+0

क्योंकि यह उदाहरण यह नहीं दिखाता कि "शामिल स्थिति" क्या हो सकती है, माइकल Pakhantsov के जवाब, और [cedrikdlb का जवाब] (http://stackoverflow.com/a/25674132/199364), और [परवीन का जवाब इसी तरह का सवाल, जहां सही पंक्ति चुनने के लिए दो स्तंभों की तुलना की जानी चाहिए] (http://stackoverflow.com/a/17350703/199364)। – ToolmakerSteve

12

आशा है कि आप कुंजी क्षेत्र दो तालिकाओं है।

UPDATE tblindiantime t 
    SET CountryName = (SELECT c.BusinessCountry 
        FROM contacts c WHERE c.Key = t.Key 
        ) 
+0

यह केवल तभी मान्य है यदि आप एक फ़ील्ड को एक दूसरे फ़ील्ड से प्रतिस्थापित करते हैं तो यह 'ओआरए -01427: सिंगल-पंक्ति सबक्वायरी एक से अधिक पंक्तियों को वापस लाएगा' यदि एक से अधिक पंक्तियों का चयन करें, तो क्या होगा यदि मैं एक से अधिक का चयन करना चाहता हूं इन मानों के साथ कॉलम को पंक्ति और अद्यतन करें? –

+2

@ मुहम्मद रामहै, क्या आपके पास अपडेट कॉलम में नेस्टेड टेबल है? subquery में कई पंक्तियों को वापस, फिर कुंजी संपर्क तालिका के लिए प्राथमिक नहीं है। यदि आपके पास समग्र प्राथमिक कुंजी है तो आपको केवल WHERE क्लॉज की शर्तों की आवश्यकता है। –

+0

बिल्कुल सही कोड, उम्मीद है कि यह उत्तर स्वीकार किया जाएगा –

101

क्वेरी:

एक ही टेबल:

UPDATE table_name 
SET column1 = column2 

अलग तालिका:

UPDATE table_name1 
    SET column1 = (
     SELECT column2 
     FROM table_name2 
     WHERE table_name1.id = table_name2.id 
    ); 
+12

प्रश्न के संदर्भ में गलत है, जहां पूछताछ में विशेष रूप से 2 टेबल शामिल हैं। – bPratik

+1

कॉलम के मामले में MySQL के लिए यह काम एक ही तालिका से संबंधित है। –

+9

हालांकि यह मेरी समस्या का समाधान करता है, और मैं यहां प्रश्न शीर्षक के माध्यम से आया हूं जो शायद इस उत्तर से मेल खाता है, इससे सवाल में विस्तार से मेल खाता है! –

1

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

DECLARE 
    CURSOR myCursor IS 
     Select contacts.BusinessCountry 
     From contacts c WHERE c.Key = t.Key; 
    --------------------------------------------------------------------- 
BEGIN 
    FOR resultValue IN myCursor LOOP 
     Update tblindiantime t 
     Set CountryName=resultValue.BusinessCountry 
     where t.key=resultValue.key; 
    END LOOP; 
END; 

मेरी इच्छा है कि इससे मदद मिल सके।

7

A similar question's answerthis question's selected answer (मार्क बेयर्स द्वारा) के लिए मेरे लिए अधिक सही ढंग से काम किया। मार्क के उत्तर का उपयोग करके, मेरे अपडेट किए गए कॉलम को सभी पंक्तियों में समान मूल्य मिला (संभवतः पहली पंक्ति से मूल्य जो शामिल होने से मेल खाता है)। अन्य धागे से परवेनाअरोरा के जवाब का उपयोग करके सही मानों के साथ कॉलम को अपडेट किया गया।

Parveena के समाधान को बदलने इस सवाल का 'तालिका और स्तंभ नाम, क्वेरी के रूप में किया जाएगा इस प्रकार है (मैं कहाँ मान टेबल tblindiantime.contact_id माध्यम से संबंधित हैं) का उपयोग करने के लिए:

UPDATE tblindiantime 
SET CountryName = contacts.BusinessCountry 
FROM contacts 
WHERE tblindiantime.contact_id = contacts.id; 
0

यह का उपयोग करके हल किया जा सकता अलग विशेषता।

  • सेल नियंत्रण नियंत्रण ईवेंट का उपयोग करें।
  • कॉलम मान का चयन करें जो आपके एथर कॉलम पर स्थानांतरित होता है।
  • चयनित मूल्य को किसी अन्य टेक्स्ट बॉक्स या स्तर पर भेजें जिसे आप सुविधाजनक भरते हैं और चयनित संपत्ति को संशोधित करने के लिए एक पूरक बटन भेजते हैं।
  • डेटाबेस के पूरे स्टैक को अद्यतन करें और एसक्यूएल क्वेरी के साथ एक एल्गोरिदम बनाएं ताकि इसे किसी दूसरे कॉलम में स्थानांतरित किया जा सके।
13

Table2.Column2 => Table1.Column1

मुझे पता है इस सवाल पुराना है लेकिन स्वीकार किए जाते हैं जवाब मेरे लिए काम नहीं किया। भविष्य Googler के लिए, यह क्या मेरे लिए काम किया है:

UPDATE table1 
    SET column1 = (
     SELECT column2 
     FROM table2 
     WHERE table2.id = table1.id 
    ); 

जिससे:

  • table1 = तालिका स्तंभ की जरूरत है कि अद्यतन करने की है
  • table2 = तालिका के साथ स्तंभ है कि डेटा
  • स्तम्भ 1 = खाली कॉलम कॉलम 2 से डेटा की जरूरत है कि
  • कॉलम 2 = स्तंभ में डेटा होगा (इस table1 में है) (कि table2 में है)
+0

मेरे लिए काम किया - लेकिन उपरोक्त उत्तर के समान है [माइकल Pakhantsov] ' – mmcrae

+1

आप सही हैं, @mmcra, कि यह अब उपरोक्त उत्तर के समान है। हालांकि, यह वही नहीं था जब मैंने यह टिप्पणी लिखी थी। आप देखेंगे कि इसे सितंबर में संपादित किया गया था और त्रुटियों को ठीक किया गया था। मैंने जून में यह टिप्पणी लिखी थी। –

0

अब यह प्रबंधन स्टूडियो 2016.

एसक्यूएल सर्वर प्रबंधन स्टूडियो

का उपयोग करते हुए आप प्रतिलिपि बनाना चाहते कॉलम के साथ तालिका एक और

1.Open करने के लिए एक मेज से डेटा कॉपी करने के साथ और अधिक आसान है और जिसे आप टेबल पर राइट-क्लिक करके प्रतिलिपि बनाना चाहते हैं, और उसके बाद डिज़ाइन पर क्लिक करना चाहते हैं।

2. उन कॉलम के साथ तालिका के लिए टैब पर क्लिक करें जिन्हें आप कॉपी करना चाहते हैं और उन कॉलम का चयन करें।

3. से मेनू संपादित करें, पर क्लिक करें।

4. एक नई क्वेरी संपादक विंडो खोलें।

5. क्वेरी संपादक पर राइट-क्लिक करें, और उसके बाद संपादक में डिज़ाइन क्वेरी पर क्लिक करें।

6.In टेबल संवाद बॉक्स जोड़ें, स्रोत और गंतव्य तालिका का चयन करें, जोड़ें क्लिक करें, और उसके बाद बंद टेबल संवाद बॉक्स जोड़ें।

क्वेरी संपादक, के लिए प्रकार बदलें बिंदु के एक खुले क्षेत्र 7.Right-क्लिक करें, और उसके बाद परिणाम सम्मिलित

8. में परिणाम डालने के लिए लक्ष्य तालिका चुनें संवाद बॉक्स, गंतव्य तालिका का चयन करें।

9. क्वेरी डिजाइनर के ऊपरी भाग में, स्रोत तालिका में स्रोत कॉलम पर क्लिक करें।

10. क्वेरी डिजाइनर ने अब एक INSERT क्वेरी बनाई है। क्वेरी को मूल क्वेरी संपादक विंडो में रखने के लिए ठीक क्लिक करें।

11. स्रोत तालिका से गंतव्य तालिका में डेटा डालने के लिए क्वेरी का निष्पादन करें।

अधिक जानकारी https://docs.microsoft.com/en-us/sql/relational-databases/tables/copy-columns-from-one-table-to-another-database-engine

संबंधित मुद्दे

 संबंधित मुद्दे