यूजर-डिफाइंड वेरिएबल के साथ SUM को अंतिम पंक्ति में अपडेट करना
कुल योग को एक वेरिएबल में स्टोर करें और फिर UPDATE कमांड का उपयोग करके इसे अंतिम पंक्ति में सेट करें।
आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Value INT
);
रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable (Value) VALUES (70); mysql> INSERT INTO DemoTable (Value) VALUES (100); mysql> INSERT INTO DemoTable (Value) VALUES (150); mysql> INSERT INTO DemoTable (Value) VALUES (250); mysql> INSERT INTO DemoTable (Value) VALUES (60);
सभी रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+----+-------+ | Id | Value | +----+-------+ | 1 | 70 | | 2 | 100 | | 3 | 150 | | 4 | 250 | | 5 | 60 | +----+-------+
योग को वेरिएबल में स्टोर करें और अंतिम पंक्ति (Id=5) में अपडेट करें:
mysql> SET @Total = (SELECT SUM(Value) FROM DemoTable);
mysql> UPDATE DemoTable
SET Value = @Total
WHERE Id = 5;
आउटपुट: Query OK, 1 row affected
टेबल रिकॉर्ड्स फिर से जांचें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+----+-------+ | Id | Value | +----+-------+ | 1 | 70 | | 2 | 100 | | 3 | 150 | | 4 | 250 | | 5 | 630 | +----+-------+
व्याख्या:
- SET @Total = (SELECT SUM(Value) FROM DemoTable): सभी मानों का योग (70+100+150+250+60=630) वेरिएबल @Total में स्टोर करता है
- UPDATE ... SET Value = @Total WHERE Id = 5: Id=5 वाली पंक्ति के Value को 630 से अपडेट करता है
- मूल मान 60 को 630 (कुल योग) से बदल दिया गया
वैकल्पिक - एक ही स्टेटमेंट में:
UPDATE DemoTable SET Value = (SELECT SUM(Value) FROM DemoTable) WHERE Id = (SELECT MAX(Id) FROM DemoTable);
चेतावनी: MySQL में उसी टेबल को अपडेट करते समय जिससे आप पढ़ रहे हैं, कभी-कभी एरर हो सकता है। वेरिएबल तरीका अधिक सुरक्षित है।