MySQL में UPDATE कमांड और WHERE क्लॉज से विशिष्ट पंक्ति का मान 1 से घटाना
सिंटैक्स:
UPDATE yourTableName
SET yourColumnName = yourColumnName - 1
WHERE condition;
व्यावहारिक उदाहरण
1. टेबल बनाएं:
mysql> CREATE TABLE IncrementAndDecrementValue (
-> UserId INT,
-> UserScores INT
-> );
Query OK, 0 rows affected (0.60 sec)
2. डेटा डालें:
mysql> INSERT INTO IncrementAndDecrementValue VALUES(101,20000);
mysql> INSERT INTO IncrementAndDecrementValue VALUES(102,30000);
mysql> INSERT INTO IncrementAndDecrementValue VALUES(103,40000);
3. मूल डेटा:
+--------+------------+
| UserId | UserScores |
+--------+------------+
| 101 | 20000 |
| 102 | 30000 |
| 103 | 40000 |
+--------+------------+
3 rows in set (0.00 sec)
4. UserId=103 का स्कोर 1 से घटाएं:
mysql> UPDATE IncrementAndDecrementValue
-> SET UserScores = UserScores - 1
-> WHERE UserId = 103;
Query OK, 1 row affected (0.41 sec)
Rows matched: 1 Changed: 1 Warnings: 0
5. अपडेट के बाद:
+--------+------------+
| UserId | UserScores |
+--------+------------+
| 101 | 20000 |
| 102 | 30000 |
| 103 | 39999 | ← 40000 - 1
+--------+------------+
3 rows in set (0.00 sec)
विविधताएं:
निश्चित मान से घटाएं:
UPDATE table SET score = score - 10 WHERE id = 5;
शून्य से नीचे न जाने दें:
UPDATE table SET score = score - 1 WHERE id = 5 AND score > 0;
एक साथ कई पंक्तियां घटाएं:
UPDATE table SET score = score - 1 WHERE status = 'active';
RETURNING क्लॉज (MySQL 8.0.20+) से अपडेटेड मान देखें:
UPDATE table SET score = score - 1 WHERE id = 5 RETURNING score;
सावधानी:
WHERE के बिना सभी पंक्तियां अपडेट हो जाएंगी
- पहले
SELECT से प्रभावित पंक्तियां जांचें
- समवर्ती अपडेट के लिए
SELECT ... FOR UPDATE या ट्रांजैक्शन उपयोग करें
संबंधित: इंक्रीमेंट (बढ़ाना):
UPDATE table SET column = column + 1 WHERE condition;