2008-08-28 4 views
94

मैं SQL सर्वर का उपयोग कर रहा हूं, और उसी तालिका में पंक्तियों को अपडेट करने का प्रयास कर रहा हूं। मैं पठनीयता के लिए एक टेबल उपनाम का उपयोग करना चाहता हूँ।अद्यतन कथन में तालिका उपनाम का उपयोग करने का अच्छा तरीका?

यह वह जगह है जिस तरह से मैं इस समय यह कर रहा हूँ:

UPDATE ra 
SET ra.ItemValue = rb.ItemValue 
FROM dbo.Rates ra 
INNER JOIN dbo.Rates rb 
ON ra.ResourceID = rb.ResourceID 
WHERE ra.PriceSched = 't8' 
AND rb.PriceSched = 't9' 

वहाँ आसान/बेहतर तरीके हैं?

+3

मैं प्रयोग करेंगे उचित एएनएसआई शामिल हों वाक्य रचना 'से dbo.Rates रा अंदरूनी शामिल हों dbo.Rates पर ra.ResourceID = rb.ResourceID' आरबी है - यह है मानक, यह स्पष्ट है, और यह आपके WHERE खंड में जॉइन स्थिति को भूलकर किसी भी अवांछित कार्टशियन उत्पादों से बचाता है .... –

+1

marc_s का एक अच्छा बिंदु है; मैंने स्पष्ट जॉइन सिंटैक्स – realcals

+1

का उपयोग करने के लिए एसक्यूएल संपादित किया है, मैं पठनीयता के लिए वैकल्पिक कीवर्ड "AS" (dbo.Rates AS ra से) का उपयोग करना चाहता हूं। –

उत्तर

45
UPDATE ra 
    SET ra.ItemValue = rb.ItemValue 
    FROM dbo.Rates ra 
INNER JOIN dbo.Rates rb 
     ON ra.ResourceID = rb.ResourceID 
WHERE ra.PriceSched = 't8' 
    AND rb.PriceSched = 't9'; 

यह प्रदर्शन में सुधार करने में मदद कर सकता है।

2

टी-एसक्यूएल (माइक्रोसॉफ्ट एसक्यूएल) में अद्यतन क्वेरी में तालिका उपनाम। एमएस एसक्यूएल सर्वर 2008 R2 के लिए यह काम ठीक

UPDATE A_GeneralLedger set ScheduleId=g.ScheduleId 
from A_GeneralLedger l inner join A_AcGroup g on g.ACGroupID=l.AccountGroupID 
संबंधित मुद्दे

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