MySQL में UPDATE कमांड का उपयोग करके टेबल की **सभी पंक्तियों** में एक मान जोड़ सकते हैं - चाहे पूर्णांक कॉलम हो या दिनांक कॉलम।
सिंटैक्स
पूर्णांक कॉलम के लिए
UPDATE yourTableName SET integerColumn = integerColumn + value;
दिनांक कॉलम के लिए
UPDATE yourTableName SET dateColumn = DATE_ADD(dateColumn, INTERVAL value UNIT);
उदाहरण के साथ समझें
टेबल बनाएं:
CREATE TABLE addEachRowValue (
Id INT NOT NULL AUTO_INCREMENT,
Amount INT,
ShippingDate DATE,
PRIMARY KEY(Id)
);
रिकॉर्ड डालें:
INSERT INTO addEachRowValue(Amount, ShippingDate) VALUES(100, '2019-02-21');
INSERT INTO addEachRowValue(Amount, ShippingDate) VALUES(10, '2013-04-22');
INSERT INTO addEachRowValue(Amount, ShippingDate) VALUES(110, '2015-10-25');
INSERT INTO addEachRowValue(Amount, ShippingDate) VALUES(150, '2016-03-27');
INSERT INTO addEachRowValue(Amount, ShippingDate) VALUES(190, '2018-12-29');
सभी रिकॉर्ड देखें:
SELECT * FROM addEachRowValue;
आउटपुट:
+----+--------+--------------+
| Id | Amount | ShippingDate |
+----+--------+--------------+
| 1 | 100 | 2019-02-21 |
| 2 | 10 | 2013-04-22 |
| 3 | 110 | 2015-10-25 |
| 4 | 150 | 2016-03-27 |
| 5 | 190 | 2018-12-29 |
+----+--------+--------------+
1. प्रत्येक पंक्ति के Amount में 20 जोड़ें
UPDATE addEachRowValue SET Amount = Amount + 20;
परिणाम:
SELECT Amount FROM addEachRowValue;
+--------+
| Amount |
+--------+
| 120 |
| 30 |
| 130 |
| 170 |
| 210 |
+--------+
2. प्रत्येक पंक्ति के ShippingDate में 1 महीना जोड़ें
UPDATE addEachRowValue SET ShippingDate = DATE_ADD(ShippingDate, INTERVAL 1 MONTH);
परिणाम:
SELECT ShippingDate FROM addEachRowValue;
+--------------+
| ShippingDate |
+--------------+
| 2019-03-21 |
| 2013-05-22 |
| 2015-11-25 |
| 2016-04-27 |
| 2019-01-29 |
+--------------+
अन्य दिनांक अंतराल
-- 10 दिन जोड़ें
DATE_ADD(dateCol, INTERVAL 10 DAY)
-- 3 घंटे जोड़ें
DATE_ADD(dateCol, INTERVAL 3 HOUR)
-- 2 साल घटाएं
DATE_ADD(dateCol, INTERVAL -2 YEAR)
-- या
DATE_SUB(dateCol, INTERVAL 2 YEAR)
-- 6 महीने जोड़ें
DATE_ADD(dateCol, INTERVAL 6 MONTH)
NULL मान हैंडलिंग
यदि कॉलम में NULL है, तो NULL + 20 = NULL होगा। NULL को 0 मानकर जोड़ने के लिए:
UPDATE yourTable
SET intCol = COALESCE(intCol, 0) + 20;
या दो चरणों में:
UPDATE yourTable SET intCol = 0 WHERE intCol IS NULL;
UPDATE yourTable SET intCol = intCol + 20;
दिनांक कॉलम में NULL के लिए
UPDATE yourTable
SET dateCol = DATE_ADD(COALESCE(dateCol, CURDATE()), INTERVAL 1 MONTH)
WHERE dateCol IS NULL;
नोट
WHEREक्लॉज के बिना **सभी** पंक्तियाँ अपडेट होती हैं- बड़े टेबल पर बैच में अपडेट करें (LIMIT के साथ)
DATE_ADDऔरADDDATEसमान हैं- इंडेक्स वाले कॉलम अपडेट करने पर इंडेक्स पुनर्निर्माण होता है