UPDATE में कॉलम रेफरेंस के साथ मान जोड़ना
वर्तमान मान जाने बिना किसी INT कॉलम में मान जोड़ने के लिए UPDATE में SET column = column + value का उपयोग करें।
आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentScore INT
);
रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable (StudentScore) VALUES (78); mysql> INSERT INTO DemoTable (StudentScore) VALUES (89); mysql> INSERT INTO DemoTable (StudentScore) VALUES (67); mysql> INSERT INTO DemoTable (StudentScore) VALUES (95);
सभी रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-----------+--------------+ | StudentId | StudentScore | +-----------+--------------+ | 1 | 78 | | 2 | 89 | | 3 | 67 | | 4 | 95 | +-----------+--------------+
StudentId = 3 के लिए StudentScore में 21 जोड़ने के लिए क्वेरी (वर्तमान मान 67 जाने बिना):
mysql> UPDATE DemoTable
SET StudentScore = StudentScore + 21
WHERE StudentId = 3;
आउटपुट: Query OK, 1 row affected
टेबल रिकॉर्ड्स फिर से जांचें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-----------+--------------+ | StudentId | StudentScore | +-----------+--------------+ | 1 | 78 | | 2 | 89 | | 3 | 88 | | 4 | 95 | +-----------+--------------+
व्याख्या:
- StudentScore = StudentScore + 21: दाएं तरफ StudentScore वर्तमान मान पढ़ता है (67), 21 जोड़ता है (88), बाएं तरफ असाइन करता है
- WHERE StudentId = 3: केवल उस पंक्ति को प्रभावित करता है
- MySQL स्वचालित रूप से पढ़ता-लिखता है - आपको मान जानने की आवश्यकता नहीं
सामान्य पैटर्न्स:
-- इन्क्रीमेंट UPDATE table SET counter = counter + 1 WHERE id = 5; -- डिक्रीमेंट (स्टॉक कम करना) UPDATE products SET stock = stock - quantity WHERE product_id = 10; -- प्रतिशत वृद्धि UPDATE employees SET salary = salary * 1.10 WHERE department = 'IT'; -- एकाधिक कॉलम UPDATE stats SET views = views + 1, clicks = clicks + 1 WHERE page_id = 100;
परमाणुता: यह ऑपरेशन परमाणु (एटॉमिक) है - समवर्ती अपडेट्स में रेस कंडीशन नहीं होता क्योंकि MySQL पंक्ति लॉक करता है।