CASE स्टेटमेंट से बल्क अपडेट
MySQL में एक ही कॉलम की कई पंक्तियों को अलग-अलग मानों से एक साथ अपडेट करने के लिए CASE स्टेटमेंट का उपयोग करें।
सिंटैक्स
UPDATE yourTableName
SET yourColumnName = CASE yourIdColumn
WHEN value1 THEN newValue1
WHEN value2 THEN newValue2
WHEN value3 THEN newValue3
END
WHERE yourIdColumn BETWEEN value1 AND value3;
उदाहरण: छात्रों के अंक अपडेट करना
टेबल बनाएं:
mysql> CREATE TABLE updateMultipleRowsDemo (
-> StudentId INT,
-> StudentMathScore INT
-> );
डेटा इन्सर्ट करें:
mysql> INSERT INTO updateMultipleRowsDemo VALUES(10001, 67); mysql> INSERT INTO updateMultipleRowsDemo VALUES(10002, 69); mysql> INSERT INTO updateMultipleRowsDemo VALUES(10003, 89); mysql> INSERT INTO updateMultipleRowsDemo VALUES(10004, 99); mysql> INSERT INTO updateMultipleRowsDemo VALUES(10005, 92);
अपडेट से पहले:
+-----------+------------------+ | StudentId | StudentMathScore | +-----------+------------------+ | 10001 | 67 | | 10002 | 69 | | 10003 | 89 | | 10004 | 99 | | 10005 | 92 | +-----------+------------------+
एक साथ कई पंक्तियाँ अपडेट करने की क्वेरी
mysql> UPDATE updateMultipleRowsDemo
-> SET StudentMathScore = CASE StudentId
-> WHEN 10001 THEN 45
-> WHEN 10002 THEN 52
-> WHEN 10003 THEN 67
-> END
-> WHERE StudentId BETWEEN 10001 AND 10003;
आउटपुट: Query OK, 3 rows affected (0.19 sec) Rows matched: 3 Changed: 3 Warnings: 0
अपडेट के बाद:
+-----------+------------------+ | StudentId | StudentMathScore | +-----------+------------------+ | 10001 | 45 | | 10002 | 52 | | 10003 | 67 | | 10004 | 99 | | 10005 | 92 | +-----------+------------------+
महत्वपूर्ण बिंदु:
WHEREक्लॉज केवल उन पंक्तियों तक सीमित करता है जिन्हें अपडेट करना हैCASEमें शामिल न होने वाली पंक्तियाँ अपरिवर्तित रहती हैंELSEक्लॉज जोड़कर डिफ़ॉल्ट मान सेट कर सकते हैं- यह तरीका अलग-अलग UPDATE क्वेरी चलाने से तेज़ है