কম্পিউটার টিউটোরিয়াল

MySQL-এ UNION দিয়ে দুটি টেবিলের সমান কলামের যোগফল (নির্দিষ্ট আইডি)

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;
  1. MySQL-এ CONCAT() এবং JOIN ব্যবহার করে আলাদা টেবিলের কলাম সংযুক্ত করুন

  2. MySQL-এ CASE WHEN এবং GROUP_CONCAT ব্যবহার করে শর্তসাপেক্ষে কলাম মান কনক্যাটেনেট করা

  3. MySQL-এ ৫টি টেবিল থেকে 'UP' কলামের যোগফল বের করা

  4. MySQL-এ দুটি কলামের মোট মান গণনা করা (NULL বাদ দিয়ে)