2013-01-18 9 views
6

मुझे एक प्राथमिक कुंजी, एक विदेशी कुंजी और एक खाली अनुक्रम मूल्य के साथ एक डेटा सेट मिला है। विदेशी कुंजी के आधार पर डेटा में अनुक्रम संख्या जोड़ने का सबसे तेज़ तरीका क्या है?अनुक्रम के साथ मौजूदा रिकॉर्ड को अद्यतन करने का सबसे तेज़ तरीका क्या है?

QuestionConditionId मेरी प्राथमिक कुंजी है, QuestionId विदेशी कुंजी है। इस डेटा QuestionId पर द्वारा एक आदेश के साथ चयन करने के बाद कैसा दिखता है:

enter image description here

अद्यतन अपने डेटा इस तरह दिखना चाहिए के बाद:

enter image description here

मैं के लिए एक पाश लिख सकता है यह, लेकिन मैं कुछ छोटे और अधिक कुशल की उम्मीद कर रहा हूं। कोई विचार?

+1

आप एसक्यूएल सर्वर में 'row_number' रखने के लिए lukcy हैं: डी – bonCodigo

उत्तर

9
WITH T 
    AS (SELECT *, 
       ROW_NUMBER() OVER (PARTITION BY QuestionId 
             ORDER BY QuestionConditionId) AS RN 
     FROM YourTable) 
UPDATE T 
SET Sequence = RN 

लेकिन इस Sequence स्तंभ आवेषण, अपडेट के बाद सिंक्रनाइज़ रखते हुए, हटाए गए अधिक परेशानी हो सकती है की तुलना में इसके लायक है। आप इसे संग्रहीत करने के बजाय SELECT समय पर गणना करने के लिए ROW_NUMBER का भी उपयोग कर सकते हैं।

+1

'+ 1' यह जानना अच्छा है कि सीटीई अपडेट करने योग्य है': डी' –

+0

बिल्कुल सही! ठीक वही जो मेरे द्वारा खोजा जा रहा था – Mark

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

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