MySQL में एक ही UPDATE स्टेटमेंट में एकाधिक कॉलम अपडेट करने के लिए, SET क्लॉज़ में कॉलम को कॉमा से अलग करके सूचीबद्ध करें। यह एटॉमिक ऑपरेशन सुनिश्चित करता है और क्वेरी ओवरहेड कम करता है।
उदाहरण: FirstName और LastName एक साथ अपडेट करना
डेमो टेबल बनाएं:
mysql> CREATE TABLE DemoTable1909 (
Id INT NOT NULL,
FirstName VARCHAR(20),
LastName VARCHAR(20)
);
डेटा इन्सर्ट करें:
mysql> INSERT INTO DemoTable1909 VALUES (101, 'John', 'Smith'), (102, 'John', 'Doe'), (103, 'Adam', 'Smith'), (104, 'David', 'Miller');
अपडेट से पहले:
+-----+-----------+----------+ | Id | FirstName | LastName | +-----+-----------+----------+ | 101 | John | Smith | | 102 | John | Doe | | 103 | Adam | Smith | | 104 | David | Miller | +-----+-----------+----------+
एक क्वेरी में दो कॉलम अपडेट करें (Id = 103 के लिए):
mysql> UPDATE DemoTable1909 SET FirstName = 'Carol', LastName = 'Taylor' WHERE Id = 103;
अपडेट के बाद:
+-----+-----------+----------+ | Id | FirstName | LastName | +-----+-----------+----------+ | 101 | John | Smith | | 102 | John | Doe | | 103 | Carol | Taylor | | 104 | David | Miller | +-----+-----------+----------+
सिंटैक्स
UPDATE table_name SET column1 = value1, column2 = value2, ..., columnN = valueN WHERE condition;
महत्वपूर्ण बिंदु
- एक SET क्लॉज़: एकाधिक
SETकीवर्ड न लिखें - कॉमा सेपरेटर: कॉलम असाइनमेंट को कॉमा से अलग करें
- एटॉमिक: सभी अपडेट एक ही ऑपरेशन में होते हैं
- WHERE क्लॉज़: हमेशा उपयोग करें जब तक सभी पंक्तियाँ अपडेट न करनी हों
एक्सप्रेशन और सबक्वेरी के साथ अपडेट
-- एक्सप्रेशन
UPDATE products SET price = price * 1.1, updated_at = NOW() WHERE category = 'electronics';
-- सबक्वेरी से मान
UPDATE orders o
SET o.customer_name = (SELECT name FROM customers c WHERE c.id = o.customer_id),
o.customer_email = (SELECT email FROM customers c WHERE c.id = o.customer_id)
WHERE o.customer_name IS NULL;
प्रदर्शन टिप
एक ही क्वेरी में एकाधिक कॉलम अपडेट करना अलग-अलग UPDATE स्टेटमेंट चलाने से तेज़ है क्योंकि:
- सिंगल टेबल लॉक/स्कैन
- कम नेटवर्क राउंड-ट्रिप
- सिंगल ट्रांजैक्शन ओवरहेड
यह मानक SQL अभ्यास है और सभी प्रमुख RDBMS में समर्थित है।