ऐसा नहीं है कि CASE
एक से अधिक होने चाहिए, WHEN...THEN
, यह है कि इसे आपके द्वारा दिए गए सभी डेटा को संभालना होगा।
यदि आपने किसी एक खंड को हटा दिया है, तो आप एक छेद छोड़ देते हैं। उदा.
UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
END
WHERE buildFK = 1;
इस अपडेट स्टेटमेंट के साथ, अगर parkFK
2 है, तो अपडेट विफल हो जाता है क्योंकि CASE इनपुट को हैंडल नहीं कर सकता।
आप या तो अपने सोर्स डेटा को अपने व्हेयर-क्लॉज में एक और लाइन जोड़कर सीमित कर सकते हैं (जैसे AND partFK in (1,2)
), या आप एक ELSE
जोड़ सकते हैं केस एक्सप्रेशन के लिए।
UPDATE partsList SET quantity =
CASE
WHEN partFK = 1 THEN 4
WHEN partFK = 2 THEN 8
ELSE 12
END
WHERE buildFK = 1;
हालांकि, आपके द्वारा दिखाए गए SQL कथन के आधार पर, शायद एक बेहतर तरीका है। संभवतः, partFK किसी अन्य तालिका के लिए एक विदेशी कुंजी है। क्या आप quantity
के लिए मान खींच सकते हैं वहाँ से?