MySQL-এ দুটি টেবিলের একই কলামের মান যোগ করতে (নির্দিষ্ট আইডির জন্য) UNION বা UNION ALL সহ সাবকোয়েরি ব্যবহার করুন।
সিনারিও
দুই টেবিল: DemoTable1 ও DemoTable2, উভয়েই PlayerId ও PlayerScore কলাম। PlayerId = 1000-র টোটাল স্কোর বের করতে হবে।
টেবিল ১
mysql> CREATE TABLE DemoTable1 (PlayerId INT, PlayerScore INT); INSERT INTO DemoTable1 VALUES (1000,87), (1000,65), (1001,10), (1000,45);
টেবিল ২
mysql> CREATE TABLE DemoTable2 (PlayerId INT, PlayerScore INT); INSERT INTO DemoTable2 VALUES (1000,67), (1001,58), (1000,32);
যোগফল (PlayerId 1000)
mysql> SELECT SUM(firstSum) FROM (
SELECT SUM(PlayerScore) AS firstSum FROM DemoTable1 WHERE PlayerId = 1000
UNION
SELECT SUM(PlayerScore) AS firstSum FROM DemoTable2 WHERE PlayerId = 1000
) tbl;
+---------------+ | sum(firstSum) | +---------------+ | 296 | -- (87+65+45) + (67+32) = 197 + 99 = 296 +---------------+
ব্যাখ্যা
- প্রতিটি টেবিলে আলাদা
SUM()করা হয়েছে UNION→ ডুপ্লিকেট সামারি রো থাকলে এক করবে (এখানে দরকার নেই)UNION ALL→ তemen দ্রুত, ডুপ্লিকেট রাখে- বাহ্যিক
SUM(firstSum)→ দুটি সামারি যোগ করে
আধুনিক বিকল্প (MySQL 8.0+ CTE)
WITH sums AS (
SELECT PlayerId, SUM(PlayerScore) AS s FROM DemoTable1 WHERE PlayerId = 1000
UNION ALL
SELECT PlayerId, SUM(PlayerScore) FROM DemoTable2 WHERE PlayerId = 1000
)
SELECT SUM(s) FROM sums;