समाधान: UNION ALL के साथ उपक्वेरी
एकाधिक टेबल के समान कॉलम का कुल योग प्राप्त करने के लिए UNION ALL का उपयोग करके डेटा संयोजित करें, फिर बाहरी क्वेरी में SUM() लागू करें।
सिंटैक्स
SELECT SUM(tbl.columnName) AS TotalSum
FROM (
SELECT columnName FROM table1
UNION ALL
SELECT columnName FROM table2
-- अधिक टेबल जोड़ें
) tbl;
व्यावहारिक उदाहरण
पहली टेबल: Products1
mysql> CREATE TABLE Products1 (
-> ProductId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> ProductName VARCHAR(20),
-> ProductPrice INT
-> );
mysql> INSERT INTO Products1(ProductName, ProductPrice) VALUES
-> ('Product-1', 100), ('Product-2', 200), ('Product-3', 700);
दूसरी टेबल: Products2
mysql> CREATE TABLE Products2 (
-> ProductId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> ProductName VARCHAR(20),
-> ProductPrice INT
-> );
mysql> INSERT INTO Products2(ProductName, ProductPrice) VALUES
-> ('Product-1', 500), ('Product-4', 100), ('Product-5', 400);
योग क्वेरी
mysql> SELECT SUM(tbl.ProductPrice) AS TotalPrice
-> FROM (
-> SELECT ProductPrice FROM Products1
-> UNION ALL
-> SELECT ProductPrice FROM Products2
-> ) tbl;
परिणाम
+------------+ | TotalPrice | +------------+ | 2000 | +------------+
गणना विवरण
| टेबल | उत्पाद | कीमत |
|---|---|---|
| Products1 | Product-1 | 100 |
| Products1 | Product-2 | 200 |
| Products1 | Product-3 | 700 |
| Products2 | Product-1 | 500 |
| Products2 | Product-4 | 100 |
| Products2 | Product-5 | 400 |
| कुल | 2000 | |
महत्वपूर्ण: UNION vs UNION ALL
- UNION: डुप्लीकेट पंक्तियाँ हटाता है (धीमा)
- UNION ALL: सभी पंक्तियाँ रखता है (तेज़, योग के लिए सही)
- यदि Products1 और Products2 दोनों में Product-1 की कीमत 100 होती, तो UNION केवल एक बार गिनता
वैकल्पिक: अलग-अलग योग फिर जोड़ना
SELECT
(SELECT SUM(ProductPrice) FROM Products1) +
(SELECT SUM(ProductPrice) FROM Products2) AS TotalPrice;
यह तरीका अक्सर तेज़ होता है क्योंकि यह अस्थायी टेबल नहीं बनाता।