2013-04-08 5 views
16

मैं इस तरह मान प्राप्त करने के लिए एक Select कथन का उपयोग एक दूसरी तालिका से मूल्यों पर आधारित एक तालिका में एकाधिक स्तंभों को अद्यतन करना चाहते हैं:एसक्यूएल अद्यतन - एकाधिक कॉलम

UPDATE tbl1 
SET (col1, col2, col3) = (SELECT colA, colB, colC 
          FROM tbl2 
          WHERE tbl2.id = 'someid') 
WHERE tbl1.id = 'differentid' 

हालांकि, यह प्रतीत नहीं होता हालांकि एक से अधिक कॉलम नाम 'एसईटी' करना संभव है - क्या प्रत्येक कॉलम के लिए अलग-अलग अपडेट स्टेटमेंट लिखने के बजाय विकल्प हैं?

UPDATE tbl1 
SET col1 = (SELECT colA FROM tbl2 WHERE tbl2.id = 'someid') 
WHERE tbl1.id = 'differentid' 

UPDATE tbl1 
SET col2 = (SELECT colB FROM tbl2 WHERE tbl2.id = 'someid') 
WHERE tbl1.id = 'differentid' 

UPDATE tbl1 
SET col3 = (SELECT colC FROM tbl2 WHERE tbl2.id = 'someid') 
WHERE tbl1.id = 'differentid' 

उत्तर

21
update tbl1 
set col1 = a.col1, col2 = a.col2, col3 = a.col3 
from tbl2 a 
where tbl1.Id = 'someid' 
and a.Id = 'differentid' 
7

यह काम करना चाहिए -

Update Tbl1 
    SET 
    Col1 = B.ColA, 
    Col2 = B.ColB, 
    Col3 = B.ColC 
    FROM 
    Tbl2 B 
    Where 
    B.Id = 'Someid' 
+0

दोनों तालिकाओं के रूप में प्रश्न में देखा एक ही आईडी का हिस्सा नहीं है, है, तो कर सकते हैं मैं b.id = 'someid' के लिए एक जहां खंड डाल और tbl1.id = 'difidid' –

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