आपके पास SQL सर्वर का मालिकाना हक नहीं है UPDATE FROM
वाक्यविन्यास नीचे। यह भी सुनिश्चित नहीं है कि आपको CommonField
. में शामिल होने की आवश्यकता क्यों है और बाद में इसे छान भी लें। इसे आजमाएं:
UPDATE t1
SET t1.CalculatedColumn = t2.[Calculated Column]
FROM dbo.Table1 AS t1
INNER JOIN dbo.Table2 AS t2
ON t1.CommonField = t2.[Common Field]
WHERE t1.BatchNo = '110';
यदि आप वास्तव में मूर्खतापूर्ण कुछ कर रहे हैं - जैसे लगातार एक कॉलम के मूल्य को दूसरे कॉलम के कुल में सेट करने का प्रयास करना (जो अनावश्यक डेटा संग्रहीत करने से बचने के सिद्धांत का उल्लंघन करता है), आप सीटीई (सामान्य तालिका अभिव्यक्ति) का उपयोग कर सकते हैं - यहां देखें और यहां अधिक विवरण के लिए:
;WITH t2 AS
(
SELECT [key], CalculatedColumn = SUM(some_column)
FROM dbo.table2
GROUP BY [key]
)
UPDATE t1
SET t1.CalculatedColumn = t2.CalculatedColumn
FROM dbo.table1 AS t1
INNER JOIN t2
ON t1.[key] = t2.[key];
इसका कारण वास्तव में मूर्खतापूर्ण है, यह है कि आपको table2
में हर बार किसी भी पंक्ति में इस संपूर्ण अपडेट को फिर से चलाना होगा। परिवर्तन। एक SUM
ऐसा कुछ है जिसे आप हमेशा रनटाइम पर गणना कर सकते हैं और ऐसा करने में, कभी भी चिंता करने की ज़रूरत नहीं है कि परिणाम पुराना है।