2009-11-17 17 views
76

मैं दो तालिकाओं के आधार पर ...अद्यतन कॉलम मूल्यों हालत

table1 (आईडी, आइटम, मूल्य) मान:

id | item | price 
------------- 
10 | book | 20 
20 | copy | 30 
30 | pen | 10 

.... table2 (आईडी, आइटम, मूल्य) को महत्व देता है:

id | item | price 
------------- 
10 | book | 20 
20 | book | 30 

अब मैं चाहता हूँ:

update table1 
    set table1.Price = table2.price 
where table1.id = table2.id 
    and table1.item = table2.item. 

मैं यह कैसे करूँ?

+0

@mrp: आप टैग के रूप में हर RDBM नहीं रखना चाहिए, क्योंकि किसी ने आपको कुछ विक्रेता विशिष्ट समाधान सलाह हो सकता है। – RageZ

उत्तर

124

कुछ इस तरह यह करना चाहिए:

UPDATE table1 
    SET table1.Price = table2.price 
    FROM table1 INNER JOIN table2 ON table1.id = table2.id 

आप भी इस कोशिश कर सकते हैं: अद्यतन table1 निर्धारित मूल्य = (चुनिंदा कीमत table2 से जहां table1.id = table2.id);

+2

यह मुझे त्रुटि संदेश देता है: अमान्य वस्तु तालिका 1। – niceApp

+0

यह मुझे त्रुटि देता है बहु-भाग पहचानकर्ता "table1.price" बाध्य नहीं हो सका। – niceApp

+0

सुनिश्चित करें कि आप 'तालिका 1' का उपयोग नहीं करते हैं, लेकिन 'table1' MSSQL केस संवेदनशील है। – RageZ

61

यह निश्चित रूप से काम करेगा:

UPDATE table1 
SET table1.price=(SELECT table2.price 
    FROM table2 
    WHERE table2.id=table1.id AND table2.item=table1.item); 
+1

मेरे लिए काम किया! thanx –

+1

लेकिन यह पंक्तियों की अधिक संख्या अपडेट नहीं कर रहा है :(इससे पहले ... –

+0

इसे केवल आंतरिक क्वेरी में लौटाई गई पंक्तियों में से कोई भी अपडेट नहीं करना चाहिए, लेकिन अपडेट की संख्या दोगुनी हो सकती है :( –

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