2012-12-19 17 views
5

बताएं इस प्रश्न का क्या अर्थ है?यह SQL क्वेरी क्या करती है? कृपया

@numberx = @numberx -1 
UPDATE th 
SET  @numberX= numberY= @numberX + 1 
FROM Table1 th 
INNER JOIN Table2 td ON th.Id = td.idth 
WHERE td.anything = @anything 

लाइन 3 पर, यह "डबल समानता" क्या है? और अद्यतन पर यह "से" और "आंतरिक" क्या है?

+3

आपको इस उत्कृष्ट लेख को [समझने में शामिल] पर पढ़ना चाहिए (http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html) – Bartek

उत्तर

8

Table1 में प्रत्येक पंक्ति में लगातार संख्या निर्दिष्ट करने के लिए यह एक एकाधिक तालिका अद्यतन है जहां Table2 में संबंधित पंक्ति कॉलम anything के लिए एक विशिष्ट मान है।

प्रत्येक मिलान पंक्ति के लिए यह @numberX + 1 के मान पर कॉलम numberY सेट करता है। यह उस मान को फिर से सौंपता है जो @numberX पर वापस आता है, जो प्रत्येक पंक्ति के लिए @numberX को बढ़ाया जाता है।

इसे "क्विर्की अपडेट" के रूप में जाना जाता है। यह रनिंग योग उत्पन्न करने के लिए एक अनियंत्रित और गारंटीकृत दृष्टिकोण नहीं है। 2012 में SUM() OVER (ORDER BY ...) का उपयोग इसके बजाय किया जाना चाहिए।

+0

क्या यह एक पंक्ति है -बी-पंक्ति वृद्धिशील अद्यतन, या सभी संख्याओं के मूल्यों में समान वृद्धि होगी? (वह लगभग अंग्रेजी में बाहर आया ...) –

+0

क्या यह SQL सर्वर में काम करने की गारंटी है? मुझे कोई कारण नहीं दिखता कि एक चर की उपस्थिति से अद्यतन को क्रमबद्ध क्यों किया जाना चाहिए। –

+0

@ मार्कबियर - आरडीबीएमएस इसका क्या समर्थन करता है? –

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