2011-11-29 12 views
5

मैं एक समाधान के लिए खोज की है, लेकिन अभी तक एक है कि काम करता है ...पहुँच अद्यतन क्वेरी एसक्यूएल से अधिक मान

मैं एक स्तंभ में अलग मूल्यों पर आधारित एक कॉलम में एक से अधिक मान अद्यतन करने के लिए कोशिश कर रहा हूँ नहीं मिला है ।

If status = F05 then statusID = 987 
If status = F12 then statusID = 12957 

मुझे कोई सफलता के साथ इस की कोशिश की है: उदाहरण के लिए:

UPDATE myTable 
SET statusID = CASE status 
    WHEN 'F05' THEN 987 
    WHEN 'F12' THEN 12957 
END 

हजारों कि तो बेशक को अद्यतन करने की जरूरत है, कर रहे हैं, मैं एक ही अद्यतन क्वेरी में इस चलाना चाहते हैं।

मुझे क्या याद आ रही है? मैं क्या गलत कर रहा हूं?

धन्यवाद!

+2

आपका 'UPDATE' क्वेरी दिखता प्रदर्शन ठीक। वर्णन करें "मैंने इसे सफलता के साथ आजमाया है"। क्या हुआ? –

+1

CASE का उपयोग केवल वीबीए में किया जा सकता है, एमएस एक्सेस क्वेरी में नहीं। –

उत्तर

7

पहुंच में आप SWITCH फ़ंक्शन का उपयोग कर सकते हैं। केस स्टेटमेंट काम नहीं करता है।

UPDATE myTable 
SET statusID = 
SWITCH 
    ([status] = 'F05', 987, 
    [status] = 'F12', 12957) 

लेकिन यदि आप भी कई आइटम नहीं हैं आप एक मानचित्रण तालिका कौन है डेटा

OldStatus | NewStatus 
--------------------- 
F05  | 987 
F12  | 12957 

तरह लग रहा है बनाने के लिए चाहते हो सकता है और उसके बाद निम्न

UPDATE 
     myTable 
     INNER JOIN Mapping ON myTable.Status = Mapping.OldStatus 
SET 
     myTable.Status = Mapping.NewStatus; 
+0

शानदार! धन्यवाद! –

+0

यह बहुत अच्छी तरह से काम कर रहा है। मैंने तालिका निर्यात की है, कोड के प्रारूप में फ़ील्ड को संयोजित करने के लिए एक्सेल का उपयोग किया है, और इसे मेरी अद्यतन क्वेरी के रूप में वापस लाया है। कितना बड़ा समय बचाओ! इस उपहार के लिए धन्यवाद! ~ कर्न –

+0

ओह नहीं ... :) स्विच मेरे पहले सेट के लिए बहुत अच्छा काम करता है, हालांकि अगर मैं 15 से अधिक वस्तुओं का उपयोग करता हूं तो यह "अभिव्यक्ति बहुत जटिल" त्रुटि देता है ... मैं इस बड़े पैमाने पर कैसे प्रदर्शन कर सकता हूं? –

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