Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL केस...कहां...फिर बयान

ऐसा नहीं है कि 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 के लिए मान खींच सकते हैं वहाँ से?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL गलत अनुक्रमणिका का उपयोग क्यों करता है?

  2. PHP में दो बार के बीच समय अंतर प्राप्त करना

  3. php सिंगलटन डेटाबेस कनेक्शन, क्या यह कोड खराब अभ्यास है?

  4. क्या SQL सर्वर MySQL के ON DUPLICATE KEY UPDATE की तरह कुछ भी ऑफर करता है?

  5. MySQL व्यू से सेलेक्ट करें जिसमें क्लॉज रिटर्न खाली रिजल्ट सेट है