MySQL में CASE स्टेटमेंट का उपयोग UPDATE के अंदर करके, वर्तमान मान के आधार पर नया मान सेट कर सकते हैं। यह मानों को स्वैप करने, मैप करने, या कंडीशनल ट्रांसफॉर्मेशन के लिए उपयोगी है।
उदाहरण: StudentMarks मान स्वैप करना (45↔98)
डेमो टेबल बनाएं:
mysql> CREATE TABLE DemoTable1925 (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName VARCHAR(20),
StudentMarks INT
);
डेटा इन्सर्ट करें:
mysql> INSERT INTO DemoTable1925 (StudentName, StudentMarks) VALUES
('Chris', 98), ('David', 45);
अपडेट से पहले:
+-----------+-------------+--------------+ | StudentId | StudentName | StudentMarks | +-----------+-------------+--------------+ | 1 | Chris | 98 | | 2 | David | 45 | +-----------+-------------+--------------+
CASE के साथ UPDATE (मान स्वैप करें):
mysql> UPDATE DemoTable1925
SET StudentMarks = CASE StudentMarks
WHEN 45 THEN 98
WHEN 98 THEN 0
END
WHERE StudentMarks IN (45, 98);
अपडेट के बाद:
+-----------+-------------+--------------+ | StudentId | StudentName | StudentMarks | +-----------+-------------+--------------+ | 1 | Chris | 0 | | 2 | David | 98 | +-----------+-------------+--------------+
सरल CASE सिंटैक्स
UPDATE table_name
SET column = CASE column
WHEN value1 THEN new_value1
WHEN value2 THEN new_value2
...
ELSE column -- या कोई डिफ़ॉल्ट
END
WHERE condition;
खोजा गया CASE (शर्तों के लिए)
UPDATE table_name
SET column = CASE
WHEN column > 100 THEN 'High'
WHEN column > 50 THEN 'Medium'
ELSE 'Low'
END;
उन्नत उदाहरण: सैलरी ब्रैकेट अपडेट
UPDATE employees
SET bonus = CASE
WHEN salary >= 100000 THEN salary * 0.20
WHEN salary >= 50000 THEN salary * 0.15
WHEN salary >= 30000 THEN salary * 0.10
ELSE 0
END,
bonus_tier = CASE
WHEN salary >= 100000 THEN 'Platinum'
WHEN salary >= 50000 THEN 'Gold'
WHEN salary >= 30000 THEN 'Silver'
ELSE 'Bronze'
END;
सावधानियां
- WHERE क्लॉज़: केवल प्रभावित पंक्तियों को अपडेट करने के लिए उपयोग करें (प्रदर्शन और सुरक्षा)
- ELSE क्लॉज़: सरल CASE में ELSE न होने पर NULL सेट हो सकता है
- डेटा प्रकार: THEN अभिव्यक्तियों का डेटा प्रकार कॉलम के साथ संगत होना चाहिए
- ट्रिगर: यह BEFORE UPDATE ट्रिगर को फायर करेगा
CASE के साथ UPDATE डेटा ट्रांसफॉर्मेशन, माइग्रेशन, और बिजनेस लॉजिक लागू करने के लिए शक्तिशाली टूल है।