MySQL में UPDATE स्टेटमेंट में WHERE क्लॉज का उपयोग करके एक ही क्वेरी में एकाधिक कॉलम अपडेट किए जा सकते हैं, लेकिन एकाधिक पंक्तियों को अलग-अलग मानों से अपडेट करने के लिए CASE या एकाधिक क्वेरी की आवश्यकता होती है।
उदाहरण: एक पंक्ति, एकाधिक कॉलम
तालिका बनाएं:
mysql> CREATE TABLE DemoTable (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Marks1 INT, Marks2 INT, Marks3 INT
-> );
mysql> INSERT INTO DemoTable(Marks1, Marks2, Marks3) VALUES (45, 67, 34), (89, 87, 56), (87, 56, 54);
पहले
+----+--------+--------+--------+
| Id | Marks1 | Marks2 | Marks3 |
+----+--------+--------+--------+
| 1 | 45 | 67 | 34 |
| 2 | 89 | 87 | 56 |
| 3 | 87 | 56 | 54 |
+----+--------+--------+--------+
Id=1 के लिए तीनों कॉलम अपडेट करें
mysql> UPDATE DemoTable
->> SET Marks1 = 98, Marks2 = 96, Marks3 = 99
->> WHERE Id = 1;
बाद में
+----+--------+--------+--------+
| Id | Marks1 | Marks2 | Marks3 |
+----+--------+--------+--------+
| 1 | 98 | 96 | 99 |
| 2 | 89 | 87 | 56 |
| 3 | 87 | 56 | 54 |
+----+--------+--------+--------+
एकाधिक पंक्तियों को अलग-अलग मानों से अपडेट (CASE)
UPDATE DemoTable
SET Marks1 = CASE Id
WHEN 1 THEN 98
WHEN 2 THEN 95
WHEN 3 THEN 90
ELSE Marks1 END,
Marks2 = CASE Id
WHEN 1 THEN 96
WHEN 2 THEN 94
WHEN 3 THEN 88
ELSE Marks2 END
WHERE Id IN (1, 2, 3);
मुख्य बिंदु
- एक
UPDATEमें एकाधिक कॉलम:SET col1=val1, col2=val2 - एकाधिक पंक्तियों, समान मान:
WHERE Id IN (1,2,3) - एकाधिक पंक्तियों, अलग मान:
CASEउपयोग करें - बिना WHERE के सभी पंक्तियां अपडेट होंगी
प्रदर्शन
- एक क्वेरी में बैच अपडेट व्यक्तिगत क्वेरी से तेज़
- बड़े बैच के लिए ट्रांजैक्शन उपयोग करें
Rows matched: 3 Changed: 3पुष्टि करता है