2010-09-29 16 views
19

मैंने इससे पहले विभिन्न पोस्ट पढ़ी हैं। लेकिन उनमें से कोई भी मेरे लिए काम नहीं कर रहा था।SQL किसी अन्य तालिका में किसी कॉलम को एक कॉलम अपडेट करें

शीर्षक के अनुसार, मैं किसी अन्य तालिका में कॉलम से एक कॉलम अपडेट करने का प्रयास कर रहा हूं। मैं इस से पहले साथ समस्या हो रही याद नहीं है ..

1. तालिका: user_settings.contact_id, मैं contacts.id where (user_settings.account_id == contacts_account_id)

2. पहले संपर्क उपयोगकर्ता खातों से जुड़े थे उन्हें अपडेट करना चाहते account_id के माध्यम से। हालांकि, अब हम user_settings से contacts.id

नीचे दिए गए कुछ उदाहरण हैं जो मैंने कोशिश की है, हालांकि उनमें से कोई भी काम नहीं कर रहा है। मुझे ए में दिलचस्पी होगी।) वे क्यों काम नहीं करते हैं और बी) इसके बजाय मुझे क्या करना चाहिए।

उदाहरण A:

UPDATE user_settings 
SET user_settings.contact_id = contacts.id 
FROM user_settings 
INNER JOIN contacts ON user_settings.account_id = contacts.account_id 

उदाहरण B:

UPDATE (SELECT A.contact_id id1, B.id id2 
    FROM user_settings A, contacts B 
    WHERE user_settings.account_id = contacts.account_id) 
SET id1 = id2 

उदाहरण C:

UPDATE user_settings 
SET user_settings.contact_id = (SELECT id 
    FROM contacts 
    WHERE (user_settings.account_id = contacts.account_id) 
WHERE EXISTS (user_settings.account_id = contacts.account_id) 

मैं अपने दिमाग सिर्फ मुझ पर बंद की तरह लग रहा है और रिबूट के लिए किसी भी धक्कों की सराहना करेंगे यह। धन्यवाद :)

+2

किसी को बताने के लिए मेरे कारण है कि इस मतदान किया गया तो मैं भविष्य में इसे से बचने कर सकते कर सकते हैं? –

उत्तर

38

MySQL प्रलेखन के अनुसार, एक क्रॉस तालिका अद्यतन करने के लिए, आप एक में शामिल होने के (अन्य डेटाबेस में) की तरह उपयोग नहीं कर सकते, लेकिन बजाय एक जहां खंड का उपयोग करें:

http://dev.mysql.com/doc/refman/5.0/en/update.html

मैं लगता है कुछ इस तरह काम करना चाहिए:

UPDATE User_Settings, Contacts 
    SET User_Settings.Contact_ID = Contacts.ID 
    WHERE User_Settings.Account_ID = Contacts.Account_ID 
+0

धन्यवाद मैं निश्चित रूप से बस अपने डेटाबेस मिश्रित। जैसे ही आप लिखते थे कि गियर्स ने मंथन करना शुरू कर दिया था। –

+0

आपका उत्तर वही था जो मैं ढूंढ रहा था। यदि आप मेरा मिलान करने के लिए तालिका और कॉलम नाम बदलते हैं, तो यह उत्तर को बेहतर तरीके से मेल कर सकता है। एक बार फिर धन्यवाद! –

+0

मैंने आपके सटीक तालिका नामों से मेल खाने के लिए उत्तर अपडेट किया है। – FlySwat

0
Update tabelName Set SanctionLoad=SanctionLoad Where ConnectionId=ConnectionID 
go 
update tabelName Set meterreading=meterreading where connectionid=connectionid 
go 
update tabelName set customername=setcustomername where customerid=customerid 
संबंधित मुद्दे