2013-02-23 91 views
12

मैं एक मेज T1 जो तीन कॉलम शामिल है। IdT2 का कॉलम T1 जैसा ही है।Sql अद्यतन क्वेरी

मैं एक प्रश्न जो T2 की New_Address साथ T1 की Address स्तंभ अद्यतन करेगा की जरूरत है।

मैं आईडी की जांच करके और अद्यतन कथन निष्पादित करके इसे लूप के माध्यम से कर सकता हूं। एक प्रश्न के साथ इसे कैसे किया जा सकता है?

उत्तर

12

कैसे के बारे में

UPDATE T1 
SET Address = T2.New_Address 
FROM T2 
WHERE T1.id = T2.id 
7
UPDATE T1 
SET T1.Address = T2.New_Address 
FROM T1 
INNER JOIN T2 ON T2.ID = T1.ID 
2
UPDATE T1 
SET Address = (select New_Address from T2 where T1.ID=T2.ID); 
+2

इस - एक 'वाम JOIN' के बराबर है और - यह भी अपडेट हो जाएगा Table1 में (' NULL' करने के लिए उन्हें स्थापित करने) सभी पंक्तियों है कि एक की जरूरत नहीं है तालिका 2 में 'न्यूएड्रेस'। –

+1

@ypercube - इस प्रश्न में एक संभावित लाभ यह है कि यह एक त्रुटि उत्पन्न करेगा यदि चुपचाप एक अनिश्चितता का चयन करने के बजाय एक से अधिक मेल खाने वाला नया पता है। इसे 'एसईटी पता = आईएसएनयूएलएल ((टी 2.आईडी = टी 2.आईडी), पता) के रूप में पुनः लिखा जा सकता है; हालांकि 'मेर्ज' इस त्रुटि की जांच भी करता है और बेहतर होगा। –