दिलचस्प पोस्ट
क्या यूट्यूब और मैप्स जैसे आईफोन एप्स के लिए एक एचटीएमएल + डोमेन-आधारित यूआरएल योजना पंजीकरण करना संभव है? MySQL के साथ जुड़ने के लिए टॉमकेट को कॉन्फ़िगर कैसे करें I सी में मैक्रोज़ में कोष्ठकों की आवश्यकता आईफ़ोन डिवाइस पर विधि स्विजल ViewPager.setOffscreenPageLimit (0) अपेक्षा के अनुरूप काम नहीं करता है वाईएएमएल में, मैं एक स्ट्रिंग को कई लाइनों से कैसे तोड़ सकता हूं? एक ब्लॉब यूआरएल क्या है और इसका इस्तेमाल क्यों किया जाता है? Array.length = 0 और Array = के बीच का अंतर? 8080 से 80 तक टॉमकेट का बंदरगाह कैसे बदल सकता है? आयताकार फिट करने के लिए लेबल के फ़ॉन्ट आकार को कैसे समायोजित करें? Html.BeginForm () एक पूर्ण यूआरएल के साथ? अवैध ढेर का पता और घातक संकेत 11 .txt फ़ाइल में लिखें? सी # में दिन के समय जोड़ें दिन MYSQL गिनती (*) में क्या बेहतर है या गिनती (1)?

SQL सर्वर में JOIN का उपयोग करते हुए एक तालिका अपडेट करें?

मैं तालिका में एक स्तंभ को अद्यतन करना चाहता हूं जिससे कि अन्य तालिका में शामिल हो सकता है उदा:

UPDATE table1 a INNER JOIN table2 b ON a.commonfield = b.[common field] SET a.CalculatedColumn= b.[Calculated Column] WHERE b.[common field]= a.commonfield AND a.BatchNO = '110' 

लेकिन यह शिकायत कर रहा है:

संदेश 170, स्तर 15, राज्य 1, रेखा 2
रेखा 2: 'ए' के ​​पास गलत सिंटैक्स

यहाँ क्या गलत है?

Solutions Collecting From Web of "SQL सर्वर में JOIN का उपयोग करते हुए एक तालिका अपडेट करें?"

आपके पास 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 कुछ ऐसा है जिसे आप हमेशा रनटाइम में गणना कर सकते हैं और ऐसा करने में, आपको चिंता करने की ज़रूरत नहीं है कि परिणाम बासी है

इसे इस तरह आज़माएं:

 begin tran UPDATE a SET a.CalculatedColumn= b.[Calculated Column] FROM table1 a INNER JOIN table2 b ON a.commonfield = b.[common field] WHERE a.BatchNO = '110' commit tran 

(संपादित करें: झकना टाइपो!)

हारून द्वारा दिए गए उत्तर सही हैं:

 UPDATE a SET a.CalculatedColumn = b.[Calculated Column] FROM Table1 AS a INNER JOIN Table2 AS b ON a.CommonField = b.[Common Field] WHERE a.BatchNo = '110'; 

सिर्फ यह जोड़ना चाहते हैं कि SQL सर्वर में यह समस्या क्यों आती है, जब हम तालिका के उपनाम का उपयोग करने का प्रयास करते हैं, तो उस तालिका को अद्यतन करते हुए, सिंटेक्स का उल्लेख नीचे हमेशा त्रुटि देगा:

 update tableName t set t.name = 'books new' where t.id = 1 

मामले में कोई भी हो सकता है अगर आप एक तालिका को अद्यतन कर रहे हैं या शामिल होने के दौरान अद्यतन कर रहे हैं

हालांकि उपरोक्त प्रश्न पीएल / एसक्यूएल में ठीक काम करेगा लेकिन एसक्यूएल सर्वर में नहीं।

SQL सर्वर में तालिका उपनाम का उपयोग करते समय तालिका को अपडेट करने का सही तरीका यह है:

 update t set t.name = 'books new' from tableName t where t.id = 1 

आशा है कि यह हर किसी को मदद करेगी क्यों त्रुटि आ गई।

ऐसा लगता है कि SQL सर्वर 2012 टेराटाटा के पुराने अपडेट सिंटैक्स को भी संभाल सकता है:

 UPDATE a SET a.CalculatedColumn= b.[Calculated Column] FROM table1 a, table2 b WHERE b.[common field]= a.commonfield AND a.BatchNO = '110' 

अगर मुझे सही याद है, 2008R2 त्रुटि दे रहा था जब मैंने समान क्वेरी की कोशिश की

 MERGE table1 T USING table2 S ON T.CommonField = S."Common Field" AND T.BatchNo = '110' WHEN MATCHED THEN UPDATE SET CalculatedColumn = S."Calculated Column"; 

अद्यतन करने से पहले मैं एक अद्यतन के रूप में अपडेट के रूप में अपडेट करना चाहता हूं, उसे प्राप्त करने के लिए एक चयन में एक विकल्प को चालू करने के लिए मुझे यह उपयोगी लगता है। यदि मैं चाहता हूं कि सटीक पंक्तियों का चयन कर सकता हूं, तो मैं उन पंक्तियों को अपडेट कर सकता हूं जिन्हें मैं अपडेट करना चाहता हूं।

 DECLARE @expense_report_id AS INT SET @expense_report_id = 1027 --UPDATE expense_report_detail_distribution --SET service_bill_id = 9 SELECT * FROM expense_report_detail_distribution erdd INNER JOIN expense_report_detail erd INNER JOIN expense_report er ON er.expense_report_id = erd.expense_report_id ON erdd.expense_report_detail_id = erd.expense_report_detail_id WHERE er.expense_report_id = @expense_report_id 
  UPDATE mytable SET myfield = CASE other_field WHEN 1 THEN 'value' WHEN 2 THEN 'value' WHEN 3 THEN 'value' END From mytable Join otherTable on otherTable.id = mytable.id Where othertable.somecolumn = '1234' 

यहां अधिक विकल्प: http://www.karlrixon.co.uk/writing/update-multiple-rows-with-different-values-and-a-single-sql-query/

एक अन्य तरीका मर्ज का उपयोग करना होगा

  ;WITH cteTable1(CalculatedColumn, CommonField) AS ( select CalculatedColumn, CommonField from Table1 Where BatchNo = '110' ) MERGE cteTable1 AS target USING (select "Calculated Column", "Common Field" FROM dbo.Table2) AS source ("Calculated Column", "Common Field") ON (target.CommonField = source."Common Field") WHEN MATCHED THEN UPDATE SET target.CalculatedColumn = source."Calculated Column"; 

-मर्ज एसक्यूएल मानक का हिस्सा है

-इसलिए मुझे पूरा यकीन है कि आंतरिक शामिल होने के अपडेट गैर नियतात्मक हैं .. इसी प्रकार का सवाल यहां है जहां http://ask.sqlservercentral.com/questions/19089/updating-two-tables-using-single-query एचटीएमएल

प्रयत्न:

 UPDATE table1 SET CalculatedColumn = ( SELECT [Calculated Column] FROM table2 WHERE table1.commonfield = [common field]) WHERE BatchNO = '110'